| ---------------------------------------- |
| 31 March 2023. Summary of changes for version 20230331: |
| |
| This release is available at https://acpica.org/downloads |
| |
| 0) Global changes: |
| |
| |
| Update all copyright notices to the year 2023. This effects all source |
| modules, as well as utility signons. |
| Add OS-specific support for Zephyr RTOS. |
| Fix miscellaneous code that accesses various objects. |
| Remove some dead code. |
| Add C ?Flexible Array? support. |
| Add support for 64 bit LoongArch compilation. |
| Add first batch of RISC-V related definitions. |
| Performed a global automated update to remove tabs, fix indentation |
| issues, etc. |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| hwvalid: Drop port I/O validation. |
| |
| 2) ACPICA tools and utilities: |
| |
| iASL: Added full macro support in the preprocessor. Example: |
| #define ABCD(a,b,c,d) a+b+c-d |
| |
| Known macro support limitations (at this time): |
| No support for multi-line #define macros (backslash continuation |
| lines) |
| No support for the C-style ternary operator |
| No support for the stringizing operator (#) |
| No support for the concatenation (token pasting) operator (##) |
| No support for variable number of macro arguments |
| |
| Add support for AMD Secure Processor Table (ASPT) version 1. |
| Add support for Arm's MPAM ACPI table version 2. |
| ACPI 6.5: MADT: add support for trace buffer extension in GICC. |
| Headers: Delete bogus NodeArray array of pointers from AEST table. |
| PHAT table support is still ongoing. |
| |
| |
| ---------------------------------------- |
| 20 October 2022. Summary of changes for version 20221020: |
| |
| This release is available at https://acpica.org/downloads |
| |
| 0) Global changes: |
| |
| Allow disabling of -Werror. For distro maintainers having `-Werror` can |
| delay update of GCC. Since every GCC release might add new warnings that |
| were not yet captured, it might break the build of packages. With this |
| change, distros can now build with `NOWERROR=TRUE` instead of patching |
| either the errors or the makefiles. The default behavior keeps on using |
| `-Werror`. |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Added support for FFH Operation Region special context data. FFH(Fixed |
| Function Hardware) Opregion is approved to be added in ACPI 6.5 via code |
| first approach[1]. It requires special context data similar to GPIO and |
| Generic Serial Bus as it needs to know platform specific offset and |
| length. |
| |
| Reverted this commit "executer/exsystem: Warn about sleeps greater than |
| 10 ms." Due to user complaints about valid sleeps greater than 10ms seen |
| in some existing machines -- generating lots of warnings. |
| |
| Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that |
| EBDA region must be at least 1KiB in size. Because this is not |
| guaranteed, it might happen that while scanning the memory for RSDP |
| pointer, the kernel touches memory above 640KiB. This is unwanted as the |
| VGA memory range may not be decoded or even present when running under |
| virtualization. |
| |
| Check that EBDA pointer is in valid memory. If the memory at 0x40e is |
| uninitialized, the retrieved physical memory address of EBDA may be |
| beyond the low memory (i.e. above 640K). If so, the kernel may |
| unintentionally access the VGA memory, that might not be decoded or even |
| present in case of virtualization. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| Completed the existing partial support for the CDAT "table". Although |
| this isn't technically an ACPI table (It doesn't go into the XSDT), it is |
| possible to support this table in the Data Table compiler. Created one |
| new file, "utilities/utcksum.c", used to centralize checksum |
| generation/validation into one location. Includes changes to makefiles |
| and MSVC project files. |
| |
| Updated support for the IORT table - update to version E.e |
| |
| Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table |
| |
| iASL: Added CCEL table to both compiler/disassembler. |
| |
| iASL: NHLT table: Fixed compilation of optional undocumented fields |
| |
| iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 |
| ("iASL: Add CCEL table to both compiler/disassembler") introduced the |
| iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL |
| table member reference. To fix it, change ACPI_TDEL_OFFSET with |
| ACPI_CCEL_OFFSET. |
| |
| ---------------------------------------- |
| 31 March 2022. Summary of changes for version 20220331: |
| |
| 0) Global changes: |
| |
| Update all copyright notices to the year 2022. This effects all source |
| modules, as well as utility signons. |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| For the ASL Sleep() operator, issue a warning if the sleep value is |
| greater than 10 Milliseconds. Quick boottime is important, so warn about |
| sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 |
| ms, so excessive delays should be called out. 10 ms is chosen randomly, |
| but three of such delays would already make up ten percent of the |
| boottime. |
| |
| Namespace: Avoid attempting to walk the Namespace if the Namespace does |
| not exist. |
| |
| AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the |
| LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a |
| pass/fail integer. Now load returns a pass/fail integer, as well as |
| storing the return value in an optional 2nd argument. |
| |
| Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid |
| "performing pointer subtraction with a null pointer has undefined |
| behavior" compiler warnings, use uintptr_t and offsetof() that are always |
| available during Linux kernel builds to define ACPI_UINTPTR_T and the |
| ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code |
| in the Linux kernel. |
| |
| Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted |
| by superm1. |
| |
| executer/exsystem: Inform users about ACPI spec violation for the Stall() |
| operator. Values greater than 100 microseconds violate the ACPI |
| specification, so warn users about it. From the ACPI Specification |
| version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: |
| > The implementation of Stall is OS-specific, but must not relinquish |
| > control of the processor. Because of this, delays longer than 100 |
| > microseconds must use Sleep instead of Stall. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| Data Table Compiler/Disassembler: Add support for the APMT table - ARM |
| Performance Monitoring Unit table. Submitted by @bwicaksononv. |
| |
| Data Table Compiler/Disassembler: For MADT, add support for the OEM- |
| defined subtables (Types 0x80-0x7F). |
| |
| Data Table Compiler: Fixed a problem with support for the SDEV table, |
| where a subtable Length was not computed correctly. |
| |
| Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT |
| Acpi table support. |
| |
| Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and |
| add template. Submitted by MasterDrogo. |
| |
| Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: |
| iASL/NHLT: Rename linux specific structures to DeviceInfo to improve |
| readability of the code. |
| iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. |
| Undocumented bytes at the end of Endpoint Descriptor can be present |
| independently of Linux-specific structures. Their size can also vary. |
| iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 |
| bytes of size and then an amount of bytes specified by size. All of the |
| terminators that I've seen had a size equal to 4, but theoretically it |
| can vary. |
| |
| iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). |
| |
| iASL: Remove a remark due to excessive output. Removed a remark for |
| duplicate Offset() operators, due to a user complaint. |
| |
| ---------------------------------------- |
| 17 December 2021. Summary of changes for version 20211217: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Hardware: Do not flush CPU cache when entering S4 and S5. According to |
| ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to |
| S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of |
| the sleep state. Blind cache flush on entering S5 causes problems for |
| TDX. |
| |
| Avoid subobject buffer overflow when validating RSDP signature. Since the |
| Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to |
| it is only to a 4-char array, and so trying to read past the 4th |
| character, as will be done when it is an RSDP, reads beyond the bounds of |
| the accessed member. Contributed by jrtc27. |
| |
| Add support for PCC Opregion special context data. PCC Opregion added in |
| ACPIC 6.3 requires special context data similar to GPIO and Generic |
| Serial Bus as it needs to know the internal PCC buffer and its length as |
| well as the PCC channel index when the opregion handler is being executed |
| by the OSPM. Adds support for the special context data needed by PCC |
| Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com> |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Completed compiler support for the NHLT ACPI table. |
| |
| iASL/NHLT table: Fixed a reported problem where a fault would occur |
| during disassembly of a "Linux-Specific" section if the "Specific Data" |
| part was not present. |
| |
| iASL: Added full support (compiler and disassembler) for the AGDI ACPI |
| table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>. |
| |
| iASL: Added full support for the TDEL ACPI table. |
| |
| iASL table compiler: FADT support updates: |
| 1) Allow the 32-bit DSDT address to be zero. |
| 2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. |
| |
| iASL: Fix unaligned accesses to local cache allocations. Contributed by |
| jrtc27. |
| |
| iASL: Open binary input files in binary mode, not text mode Affects |
| binary input AML files, as well as binary data table files, for |
| disassembly. |
| |
| ---------------------------------------- |
| 30 September 2021. Summary of changes for version 20210930: |
| |
| This release is available at https://acpica.org/downloads |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Hardware: Avoid evaluating methods too early during system resume. During |
| wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called |
| and it tries to get memory from the OS in order to evaluate a control |
| method, but if KFENCE is enabled in the Linux kernel, the memory |
| allocation attempt causes an IRQ work to be queued and a self-IPI to be |
| sent to the CPU running the code which requires the memory controller to |
| be ready, so if that happens too early in the wakeup path, it doesn't |
| work. |
| |
| Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 |
| upfront, when preparing to enter a given sleep state, and saving the data |
| obtained by it for later use during system wakeup. |
| |
| Added a new _OSI string, "Windows 2020". Posted by superm1. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS |
| objects: |
| New/latest rules: Under a Device Object: |
| 1) If _PRS is present, must have _CRS and _SRS |
| 2) If _SRS is present, must have _PRS (_PRS requires _CRS and |
| _SRS) |
| 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS |
| requires _CRS and _SRS) |
| 4) If _SRS is present, probably should have a _DIS (Remark only) |
| |
| iASL table disassembler: Added disassembly support for the NHLT ACPI |
| table. Note: support for Vendor-defined microphone arrays and SNR |
| extensions are not supported at this time -- mostly due to a lack of |
| example tables. Actual compiler support for NHLT is forthcoming. |
| |
| Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It |
| uses the same subtable structure as the existing Generic Initiator |
| Affinity type. |
| |
| Added the flag for online capable in the MADT, introduced in ACPI 6.3. |
| Posted by superm1. |
| |
| 3) ACPICA documentation: Updated the legal info (that appears at the |
| start of the Documents) to clarify distribution rights that are granted. |
| |
| |
| ---------------------------------------- |
| 30 July 2021. Summary of changes for version 20210730: |
| |
| This release is available at https://acpica.org/downloads |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). |
| Under the Device Object: |
| 1) If _DIS is present, must have a _CRS and _SRS |
| 2) If _PRS is present, must have a _CRS, _DIS, and _SRS |
| 3) If _SRS is present, must have a _CRS and _DIS |
| A warning will be issued for each of these cases. |
| Note: For existing ASL/projects, these warnings may be disabled by |
| specifying this on the command line: |
| "-vw 3141" |
| |
| iASL Table Disassembler/Table compiler: Fix for WPBT table with no |
| command-line arguments. Handle the case where the Command-line |
| Arguments table field does not exist (zero). |
| |
| Headers: Add new DBG2 Serial Port Subtypes |
| The Microsoft Debug Port Table 2 (DBG2) specification revision |
| September 21, 2020 comprises additional Serial Port Subtypes [1]. |
| Reflect that in the actbl1.h header file. Submitted by: |
| semihalf-wojtas-marcin |
| |
| iASL: Add full support for the AEST table (data compiler) |
| Includes support in the table compiler and the disassembler. |
| |
| Add PRMT module header to facilitate parsing. |
| This structure is used in to parse PRMT in other Operating Systems |
| that relies on using subtable headers in order to parse ACPI tables. |
| Although the PRMT doesn't have "subtables" it has a list of module |
| information structures that act as subtables. |
| |
| iASL: Table disassembler: Add missing strings to decode subtable types. |
| Includes the MADT and CEDT tables. |
| |
| |
| ---------------------------------------- |
| 04 June 2021. Summary of changes for version 20210604: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Cleaned up (delete) the context mutex during local address handler object |
| deletion. |
| |
| Fixed a memory leak caused by the _CID repair function. |
| |
| Added support for PlatformRtMechanism OperationRegion handler. Adds a new |
| utility function, AcpiUtConvertUuidToString. Writing a buffer to a |
| PlatformRtMechanism fieldunit invokes a bidirectional transaction. The |
| input buffer contains 26 bytes containing 9 bytes of status, a command |
| byte and a 16-byte UUID. This change will simply pass this incoming |
| buffer to a handler registered by the OS. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| Added full support for the PRMT ACPI table (Platform Runtime Mechanism |
| Table). Includes support in the iASL compiler, the disassembler, and the |
| template generator. |
| |
| Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. |
| |
| Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI |
| table. |
| |
| Added full support for the SVKL (Storage Volume Key Location Table) ACPI |
| table. Header file support from Kuppuswamy Sathyanarayanan |
| <sathyanarayanan.kuppuswamy@linux.intel.com>. |
| |
| Completed full support for the IVRS (I/O Virtualization Reporting |
| Structure) ACPI table. Added compiler support for IVRS, updated |
| disassembler support. Adds a new utility, UtIsIdInteger, to determine if |
| a HID/CID is an integer or a string. |
| |
| Headers: Added more structs to the CEDT table: CXL fixed memory window |
| structure. |
| |
| ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. |
| |
| ---------------------------------------- |
| 31 March 2021. Summary of changes for version 20210331: |
| |
| This release is available at https://acpica.org/downloads, and includes |
| all ACPI 6.4 support |
| |
| 1) ACPICA kernel-resident subsystem: |
| ACPI 6.4: iASL: deprecate DDBHandleObj keyword |
| Always create namespace nodes using AcpiNsCreateNode(). ACPICA is |
| allocating an object using kmalloc(), but then frees it |
| using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. |
| Fixed a race condition in generic serial bus operation region handler. |
| Fixed by Hans de Goede. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| ACPI 6.4: NFIT: add Location Cookie field |
| ACPI 6.4: HMAT: add new fields/flags |
| ACPI 6.4: Add new flags in SRAT |
| ACPI 6.4: add SDEV secure access components |
| ACPI 6.4: add Csi2Bus resource template |
| ACPI 6.4: add support for PHAT table |
| ACPI 6.4: add support for PMTT table |
| Add disassembly support for the IVRS table. Compilation of the table is |
| not yet complete. |
| Fixed a potential infinite loop due to type mismatch. The for-loop is |
| using a UINT8 counter and comparing the upper |
| limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In |
| the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i |
| will wrap around to zero and the loop will never exit. I suspect |
| the AslGbl_ExpectedMessagesIndex is never that high, but fixing |
| this does future proof the code and cleans up static analysis |
| warnings.Colin King. |
| iASL/TableCompiler: update it with IORT table E.b revision changes. From |
| shamiali2008. |
| iASL/TableCompiler: Add compilation support for the VIOT table. Signed- |
| off-by: Jean-Philippe Brucker. |
| iASL/TableCompiler: Add compilation support for CEDT table. Also, update |
| the CEDT template. |
| |
| ---------------------------------------- |
| 05 January 2021. Summary of changes for version 20210105: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all copyrights to 2021. This affects all ACPICA source code |
| modules. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| ASL test suite (ASLTS): Updated all copyrights to 2021. |
| |
| Tools and utilities: Updated all signon copyrights to 2021. |
| |
| iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, |
| MTMR. Al Stone. |
| |
| |
| ---------------------------------------- |
| 17 December 2020. Summary of changes for version 20201217: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Note: The implementation of ACPI 6.4 is underway, and is expected to be |
| mostly finished next month, when ACPI 6.4 is released. |
| |
| From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added |
| several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to |
| enable this. |
| |
| AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. |
| These included a few casts, as well as a null pointer check. |
| |
| Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on |
| implicit fallthrough, as well as __attribute__((__fallthrough__)) and |
| comments to explicitly denote that cases of fallthrough were intentional. |
| Clang also supports this warning and statement attribute, but not the |
| comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature |
| of GCC. With assistance from @nickdesaulniers. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| Added improvement to method call analysis by saving the return type and |
| relaxing certain cases of type checking. |
| |
| iASL Table Compiler: Improved info messages. Added a message to the -T |
| option for when the default template (DSDT) is used. |
| Also added a note for when multiple SSDTs are created with a DSDT that |
| the SSDTs are created in the same file as the DSDT. |
| |
| |
| ---------------------------------------- |
| |
| 13 November 2020. Summary of changes for version 20201113: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Interpreter: fixed a memory leak by using use existing buffer in _HID |
| repair. There was a memory leak that occurred when a _CID object is |
| defined as a package containing string objects. When _CID is checked for |
| any possible repairs, it calls a helper function to repair _HID (because |
| _CID basically contains multiple _HID entries). The _HID repair function |
| assumes that string objects are standalone objects that are not contained |
| inside of any packages. The _HID repair function replaced the string |
| object with a brand new object and attempted to delete the old object by |
| decrementing the reference count of the old object. Strings inside of |
| packages have a reference count of 2 so the _HID repair function leaves |
| this object in a dangling state and causes a memory leak. Instead of |
| allocating a brand new object and removing the old object, use the |
| existing object when repairing the _HID object. |
| |
| Added function trace macros to improve namespace debugging. The namespace |
| repair mechanism does not have function tracing macros. Add several trace |
| macros to improve debuggability. |
| |
| Handle "orphan" _REG methods for GPIO OpRegions. Before this change |
| AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no |
| matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry |
| Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. |
| The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific |
| UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads |
| to potential issues with checks for OpRegion availability, or in other |
| words checks if _REG has been called for the OpRegion which the ACPI code |
| wants to use. Except for the "orphan" EC handling, ACPICA core does not |
| call _REG on an ACPI node which does not define an OpRegion matching the |
| type being registered; and the reference design DSDT, from which most |
| Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor |
| UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins |
| were assigned ACPI controlled functions in the reference design. Together |
| this leads to the perfect storm, at least on the Cherry Trail based |
| Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code |
| and has added the Cherry Trail specific UserDefined(0x93) opregion to its |
| GPO2 ACPI node to access this pin. But it uses a "has _REG been called" |
| availability check for the standard GeneralPurposeIo OpRegion. This |
| clearly is a bug in the DSDT, but this does work under Windows. This |
| issue leads to the intel vbtn driver reporting the device always being in |
| tablet-mode at boot, even if it is in laptop mode. Which in turn causes |
| userspace to ignore touchpad events. So in other words, this issue causes |
| the touchpad to not work at boot. This change fixes this by extending the |
| "orphan" _REG method handling to also apply to GPIO address-space |
| handlers. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Added more info to namespace dump file (-ln option). In a separate |
| section of the dump file (after the main namespace dump), emit the full |
| pathname for each namespace node, its type, and the ASL filename and line |
| number where it is declared. |
| |
| AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - |
| x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value |
| is omitted, all iASL exceptions are displayed. |
| |
| iASL: Use StringLiteral instead of StringData for some ASL macros. The |
| use of the stringData rule allows for some "string" oriented opcodes |
| (Such as ToString, ToHexString, etc.) None of which make sense with the |
| macros in question. This change modifies the StringData part of the rule |
| for these macros to a simple string literal - thus disallowing the use |
| of ToString, ToHexString, etc. |
| The following ASL operators (macros) are affected: |
| EisaId |
| Fprintf |
| Printf |
| ToUuid |
| Unicode |
| Note: The MS compiler requires the use of string literals for these |
| operators also. |
| |
| iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search |
| the list of "known" UUIDs for the input to the ToUUID macro. |
| |
| Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the |
| NFIT table. |
| |
| |
| ---------------------------------------- |
| |
| 25 September 2020. Summary of changes for version 20200925: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Preserve memory opregion mappings. The ACPICA's strategy with respect to |
| the handling of memory mappings associated with memory operation regions |
| is to avoid mapping the entire region at once which may be problematic at |
| least in principle (for example, it may lead to conflicts with |
| overlapping mappings having different attributes created by drivers). It |
| may also be wasteful, because memory opregions on some systems take up |
| vastchunks of address space while the fields in those regions actually |
| accessed by AML are sparsely distributed. |
| |
| For this reason, a one-page "window" is mapped for a given opregion on |
| the first memory access through it and if that "window" does not cover an |
| address range accessed through that opregion subsequently, it is unmapped |
| and a new "window" is mapped to replace it. Next, if the new "window" is |
| not sufficient to access memory through the opregion in question in the |
| future, it will be replaced with yet another "window" and so on. That |
| may lead to a suboptimal sequence of memory mapping and unmapping |
| operations, for example if two fields in one opregion separated from each |
| other by a sufficiently wide chunk of unused address space are accessed |
| in an alternating pattern. |
| |
| Added support for 64 bit risc-v compilation. Useful for acpica tools and |
| incorporating ACPICA into the Firmware Test Suite. Colin Ian King |
| <colin.king@canonical.com>. |
| |
| Added support for SMBus predefined names (from SMBus Control Method |
| Interface Specification, Version 1.0, December 10, 1999. New predefined |
| names: |
| _SBA |
| _SBI |
| _SBR |
| _SBT |
| _SBW |
| |
| AML Disassembler: Added a new command, "All <NameSeg>". This command will |
| evaluate all objects in the current namespace whose NameString contains |
| the input NameSeg as the last element of the NameString. Useful for |
| debugging. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: fixed a crash that occurred when predefined objects return packages |
| with lengths that exceed the initializer list. |
| |
| iASL: added more detail to external resolution error message when |
| compiling multiple definition blocks. |
| |
| iASL: added a remark for an attempt to create a nameseg or namestring |
| containing lower-case letters. This should prevent declaring multiple |
| namesegs or namestrings in an attempt to refer to different objects (with |
| different cases), but actually refer to the same object(s). |
| |
| iASL: improve alias analysis by saving object type. If the alias is a |
| method type, the parameter count is also recorded. |
| |
| AcpiExec: Increase the default loop timeout value. Was 1 second, is now |
| 10 seconds. Prevents unnecessary timeouts when executing control methods |
| from the command line. |
| |
| AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal |
| list. Includes: |
| Memory Device |
| Generic Buttons Device |
| NVDIMM Root Device |
| Control Method Battery |
| Device Graphs for _DSD method |
| Hierarchical Data Extension |
| ....ARM CoreSight Graph |
| |
| ---------------------------------------- |
| |
| |
| 17 July 2020. Summary of changes for version 20200717: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Do not increment OperationRegion reference counts for field units. Recent |
| server firmware has revealed that this reference count can overflow on |
| large servers that declare many field units (thousands) under the same |
| OperationRegion. This occurs because each field unit declaration will add |
| a reference count to the source OperationRegion. This release solves the |
| reference count overflow for OperationRegion objects by preventing |
| fieldUnits from incrementing their parent OperationRegion's reference |
| count. |
| |
| Replaced one-element arrays with flexible-arrays, which were introduced |
| in C99. |
| |
| Restored the readme file containing the directions for generation of |
| ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is |
| located at: generate/msvc2017/readme.txt |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Fixed a regression found in version 20200214. Prevent iASL from |
| emitting an extra byte of garbage data when control methods declared a |
| single parameter type without using braces. This extra byte is known to |
| cause a blue screen on the Windows AML interpreter. |
| |
| iASL: Made a change to allow external declarations to specify the type of |
| a named object even when some name segments are not defined. |
| This change allows the following ASL code to compile (When DEV0 is not |
| defined or not defined yet): |
| |
| External (\_SB.DEV0.OBJ1, IntObj) |
| External (\_SB.DEV0, DeviceObj) |
| |
| iASL: Fixed a problem where method names in "Alias ()" statement could be |
| misinterpreted. They are now interpreted correctly as method invocations. |
| |
| iASL: capture a method parameter count (Within the Method info segment, |
| as well as the argument node) when using parameter type lists. |
| |
| ---------------------------------------- |
| |
| |
| 28 May 2020. Summary of changes for version 20200528: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Removed old/obsolete Visual Studio files which were used to build the |
| Windows versions of the ACPICA tools. Since we have moved to Visual |
| Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 |
| project files. The new subdirectory and solution file are located at: |
| |
| acpica/generate/msvc2017/AcpiComponents.sln |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: added support for a new OperationRegion Address Space (subtype): |
| PlatformRtMechanism. Support for this new keyword is being released for |
| early prototyping. It will appear in the next release of the ACPI |
| specification. |
| |
| iASL: do not optimize the NameString parameter of the CondRefOf operator. |
| In the previous iASL compiler release, the NameString parameter of the |
| CondRefOf was optimized. There is evidence that some implementations of |
| the AML interpreter do not perform the recursive search-to-parent search |
| during the execution of the CondRefOf operator. Therefore, the CondRefOf |
| operator behaves differently when the NameString parameter is a single |
| name segment (a NameSeg) as opposed to a full NamePath (starting at the |
| root scope) or a NameString containing parent prefixes. |
| |
| iASL: Prevent an inadvertent remark message. This change prevents a |
| remark if within a control method the following exist: |
| 1) An Operation Region is defined, and |
| 2) A Field operator is defined that refers to the region. |
| This happens because at the top level, the Field operator does not |
| actually create a new named object, it simply references the operation |
| region. |
| |
| Removed support for the acpinames utility. The acpinames was a simple |
| utility used to populate and display the ACPI namespace without executing |
| any AML code. However, ACPICA now supports executable opcodes outside of |
| control methods. This means that executable AML opcodes such as If and |
| Store opcodes need to be executed during table load. Therefore, acpinames |
| would need to be updated to match the same behavior as the acpiexec |
| utility and since acpiexec can already dump the entire namespace (via the |
| 'namespace' command), we no longer have the need to maintain acpinames. |
| |
| In order to dump the contents of the ACPI namespace using acpiexec, |
| execute the following command from the command line: |
| |
| acpiexec -b "n" [aml files] |
| |
| ---------------------------------------- |
| |
| |
| 30 April 2020. Summary of changes for version 20200430: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Cleaned up the coding style of a couple of global variables |
| (AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. |
| AcpiProtocolLengths was made static, and the definition of |
| AcpiGbl_NextCmdNum was moved to acglobal.h. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL DataTable Compiler: Fixed a segfault on errors that aren't directly |
| associated with a field. |
| |
| Disassembler: has been made more resilient so that it will continue to |
| parse AML even if the AML generates ACPI namespace errors. This enables |
| iASL to disassemble some AML that may have been compiled using older |
| versions of iASL that no longer compile with newer versions of iASL. |
| |
| iASL: Fixed the required parameters for _NIH and _NIG. Previously, there |
| was a mixup where _NIG required one parameter and _NIH required zero |
| parameters. This change swaps these parameter requirements. Now it is |
| required that _NIH must be called with one parameter and _NIG requires |
| zero parameters. |
| |
| iASL: Allow use of undefined externals as long as they are protected by |
| an if (CondRefOf (...)) block when compiling multiple definition blocks. |
| |
| iASL: Fixed the type override behavior of named objects that are declared |
| as External. External declarations will no longer override the type of |
| the actual definition if it already exists. |
| |
| AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable |
| command line wildcard support on Windows. Note: the AcpiNames utility is |
| essentially redundant with the AcpiExec utility (using the "namespace" |
| command) and is therefore deprecated. It will be removed in future |
| releases of ACPICA. |
| |
| Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* |
| operators. The disassembler is intended to emit existing ASL code as-is. |
| Therefore, error messages emitted during disassembly should be ignored or |
| handled in a way such that the disassembler can continue to parse the |
| AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op |
| parsing for create operators in order to complete parsing ASL termlists. |
| |
| iASL DataTable Compiler: IVRS table: fix potentially uninitialized |
| variable warning. Some compilers catch potential uninitialized variables. |
| This is done by examining branches of if/else statements. This change |
| replaces an "else if" with an "else" to fix the uninitialized variable |
| warning. |
| |
| |
| ---------------------------------------- |
| 26 March 2020. Summary of changes for version 20200326: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Performed a code clean-up to prevent build errors on early versions of |
| GCC-10. |
| |
| Added the NHLT table signature. iASL data table compiler/disassembler |
| support for this table is coming soon. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| AcpiExec: Fixed several problems with the namespace initialization file |
| (-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS |
| errors, several seg faults, and enhancements to line parsing within the |
| init file. In addition, each object found in the init file and it's new |
| value is displayed, as well as any such entries that do not have a |
| corresponding name in the namespace. For reference, the syntax for the |
| various supported data types are presented below: |
| PCHG 0x777788889999BBBB // Integer |
| \DEV1.STR1 "XYZ" // String |
| BUF1 (88 99 AA) // Buffer |
| PKG1 [0x1111 0x2222] // Package |
| \BF1 0x7980 // BufferField |
| RCRV 0x0123456789ABCDEF // Field Unit |
| |
| iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro |
| can be used anywhere in a given ASL file to configure iASL to expect an |
| iASL compiler error code on the line where this macro was placed. If the |
| error code does not exist, an error is generated. This is intended to be |
| used for ACPICA's ASL test suite, but can be used by ASL developers as |
| well. |
| |
| iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD |
| IVRS table parsing supported only IVHD type 10h structures. Parsing an |
| IVHD type 11h caused the iasl to report unknown subtable type. Add |
| necessary structure definition for IVHD type 11h and apply correct |
| parsing method based on subtable type. Micha? ?ygowski. |
| |
| iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name |
| According to AMD IOMMU Specification Revision 3.05 the reserved field |
| should be IOMMU Feature Reporting. Change the name of the field to the |
| correct one. Micha? ?ygowski. |
| |
| acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch |
| based on suggestions by David Seifert and Benjamin Berg. |
| |
| iASL: table compiler: removed an unused variable (DtCompilerParserResult) |
| causing linking errors. Patch based on suggestions by David Seifert and |
| Benjamin Berg. |
| |
| iASL: table compiler: make LexBuffer static to avoid linking errors in |
| newer compilers. Patch based on suggestions by David Seifert and Benjamin |
| Berg. |
| |
| iASL: fixed type matching between External and Named objects. External |
| object types can only be expressed with ACPI object type values that are |
| defined in the ACPI spec. However, iASL uses ACPI object type values that |
| are local to ACPICA in addition to the values defined in the ACPI spec. |
| This change implements type matching to map some object type values |
| specific to ACPICA to ones that are defined in the ACPI spec. |
| |
| iASL: Dropped the type mismatch compiler error that can arise from |
| External declarations to a warning. This warning can occur when there is |
| a type difference between the external declaration and the actual object |
| declaration (when compiling multiple files/modules simultaneously). |
| |
| iASL: removed an incorrect error message regarding externals. This change |
| removes an incorrect error that is emitted when a duplicate external |
| declaration does not contain a type that opens a scope. This is incorrect |
| because the duplicate external with conflicting types are already caught |
| by iASL and it doesn't make any sense to enforce what this conflicting |
| type should be. |
| |
| AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be |
| surrounded by parens. Otherwise, a logical statement that applies a |
| logical not operator to this macro could result in a computation that |
| applies the operator to the left side of the logical and but not the |
| right. Reported-by: John Levon <john.levon@joyent.com> |
| |
| Fixed a problem with the local version of sprint(): On 32-bit, the |
| provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, |
| String + Size will wrap, meaning End < Start, and |
| AcpiUtBoundStringOutput() will never output anything as a result. The |
| symptom seen of this was acpixtract failing to output anything -- with a |
| custom build that included utprint.c. Signed-off-by: John Levon |
| <john.levon@joyent.com> |
| |
| iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the |
| ACPI specification. |
| |
| |
| ---------------------------------------- |
| 14 February 2020. Summary of changes for version 20200214: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered |
| in a guest when it receives a sleep trigger from the hypervisor. When the |
| guest resumes from this power state, it does not see the SleepEnabled |
| bit. In other words, the sleepHibernation (S4) is triggered in a guest |
| when it receives a sleep trigger from the hypervisor. When the guest |
| resumes from this power state, it does not see the SleepEnabled bit. In |
| other words, the sleep button is not enabled on waking from an S4 state. |
| This causes subsequent invocation of sleep state to fail since the |
| guest.button is not enabled on waking from an S4 state. This causes |
| subsequent invocation of sleep state to fail in the guest. Fix this |
| problem by enabling the sleep button in ACPI legacy wake. From Anchal |
| Agarwal <anchalag@amazon.com>. |
| |
| Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used |
| for checking the status bits of all enabled GPEs in one go. It is needed |
| to distinguish spurious SCIs from genuine ones when deciding whether or |
| not to wake up the system from suspend-to-idle. |
| |
| Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be |
| using HOST in their environment to represent the host name for their |
| machines. Avoid this problem by renaming this variable from HOST to |
| ACPI_HOST. |
| |
| MSVC 2017 project files: Enable multiprocessor generation to improve |
| build performance. |
| |
| Added a macro to get the byte width of a Generic Address structure. New |
| ACPI_ACCESS_BYTE_WIDTH is in addition to the existing |
| ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Implemented full support for the (optional, rarely used) ReturnType |
| and ParameterTypesList for the Method, Function, and External operators. |
| For Method declarations, the number of individual ParameterTypes must |
| match the declaration of the number of arguments (NumArgs). This also |
| Fixes a problem with the External operator where extra/extraneous bytes |
| were emitted in the AML code if the optional ReturnType/ParameterTypes |
| were specified for a MethodObj declaration. |
| New error message: |
| 1) Method NumArgs count does not match length of ParameterTypes list |
| |
| iASL: Implemented detection of type mismatches between External |
| declarations and named object declarations. Also, detect type mismatches |
| between multiple External declarations of the same Name. |
| New error messages: |
| 1) Type mismatch between external declaration and actual object |
| declaration detected |
| 2) Type mismatch between multiple external declarations detected |
| |
| iASL: Implemented new error messages for External operators that specify |
| a ReturnType and/or ParameterTypesList for any object type other than |
| control methods (MethodObj). |
| New error messages: |
| 1) Return type is only allowed for Externals declared as MethodObj |
| 2) Parameter type is only allowed for Externals declared as MethodObj |
| |
| iASL: Implemented two new remark/warning messages for ASL code that |
| creates named objects from within a control method. This is very |
| inefficient since the named object must be created and deleted each time |
| the method is executed. |
| New messages: |
| 1) Creation of named objects within a method is highly inefficient, use |
| globals or method local variables instead (remark) |
| 2) Static OperationRegion should be declared outside control method |
| (warning) |
| |
| iASL: Improved illegal forward reference detection by adding support to |
| detect forward-reference method invocations. |
| |
| iASL: Detect and issue an error message for NameStrings that contain too |
| many individual NameSegs (>255). This is an AML limitation that is |
| defined in the ACPI specification. |
| New message: |
| 1) NameString contains too many NameSegs (>255) |
| |
| acpidump: windows: use GetSystemFirmwareTable API for all tables except |
| SSDT. By using this API, acpidump is able to get all tables in the XSDT |
| |
| iASL: Removed unused parser file and updated msvc2017 project files. |
| Removed the obsolete AslCompiler.y from the repository. |
| |
| iASL: msvc2017: Fixed macros in the file dependency list to prevent |
| unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). |
| |
| Disassembler: Prevent spilling error messages to the output file. All |
| errors are directed to the console instead. These error messages |
| prevented re-compilation of the resulting disassembled ASL output file |
| (.DSL). |
| |
| |
| ---------------------------------------- |
| 10 January 2020. Summary of changes for version 20200110: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all copyrights to 2020. This affects all ACPICA source code |
| modules. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| ASL test suite (ASLTS): Updated all copyrights to 2020. |
| |
| Tools and utilities: Updated all signon copyrights to 2020. |
| |
| iASL: fix forward reference analysis for field declarations. Fixes |
| forward reference analysis for field declarations by searching the |
| parent scope for the named object when the object is not present in |
| the current scope. |
| |
| iASL: Improved the error output for ALREADY_EXISTS errors. Now, the |
| full pathname of the name that already exists is printed. |
| |
| iASL: Enhance duplicate Case() detection for buffers. Add check for |
| buffers with no initializer list (these buffers will be filled with |
| zeros at runtime.) |
| |
| |
| ---------------------------------------- |
| 13 December 2019. Summary of changes for version 20191213: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Return a Buffer object for all fields created via the CreateField |
| operator. Previously, an Integer would be returned if the size of |
| the field was less than or equal to the current size of an Integer. |
| Although this goes against the ACPI specification, it provides |
| compatibility with other ACPI implementations. Also updated the |
| ASLTS test suite to reflect this new behavior. |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Implemented detection of (and throw an error for) duplicate |
| values for Case statements within a single Switch statement. Duplicate |
| Integers, Strings, and Buffers are supported. |
| |
| iASL: Fix error logging issue during multiple file compilation -- |
| Switch to the correct input file during error node creation. |
| |
| iASL: For duplicate named object creation, now emit an error instead |
| of a warning - since this will cause a runtime error. |
| |
| AcpiSrc: Add unix line-ending support for non-Windows builds. |
| |
| iASL: Add an error condition for an attempt to create a NameString |
| with > 255 NameSegs (the max allowable via the AML definition). |
| |
| |
| ---------------------------------------- |
| 18 October 2019. Summary of changes for version 20191018: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Debugger: added a new command: ?Fields [address space ID]?. This command |
| dumps the contents of all field units that are defined within the |
| namespace with a particular address space ID. |
| |
| Modified the external interface AcpiLoadTable() to return a table index. |
| This table index can be used for unloading a table for debugging. |
| ACPI_STATUS |
| AcpiLoadTable ( |
| ACPI_TABLE_HEADER *Table, |
| UINT32 *TableIndex)) |
| |
| Implemented a new external interface: AcpiUnloadTable() This new function |
| takes a table index as an argument and unloads the table. Useful for |
| debugging only. |
| ACPI_STATUS |
| AcpiUnloadTable ( |
| UINT32 TableIndex)) |
| |
| Ported the AcpiNames utility to use the new table initialization |
| sequence. The utility was broken before this change. Also, it was |
| required to include most of the AML interpreter into the utility in order |
| to process table initialization (module-level code execution.) |
| |
| Update for results from running Clang V8.0.1. This fixes all "dead |
| assignment" warnings. There are still several "Dereference of NULL |
| pointer" warnings, but these have been found to be false positive |
| warnings. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: numerous table compiler changes to ensure that the usage of |
| yacc/bison syntax is POSIX-compliant. |
| |
| iASL/disassembler: several simple bug fixes in the data table |
| disassembler. |
| |
| Acpiexec: expanded the initialization file (the -fi option) to initialize |
| strings, buffers, packages, and field units. |
| |
| |
| ---------------------------------------- |
| 16 August 2019. Summary of changes for version 20190816: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Modified the OwnerId mechanism to allow for more Owner Ids. The previous |
| limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT |
| exceptions on machines with a large number of initialization threads, |
| many CPU cores and nested initialization control methods. |
| |
| Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for |
| checking if the given GPE (as represented by a GPE device handle and a |
| GPE number) is currently active and dispatching it (if that's the case) |
| outside of interrupt context. |
| |
| Table load: exit the interpreter before initializing objects within the |
| new table This prevents re-acquiring the interpreter lock when loading |
| tables |
| |
| Added the "Windows 2019" string to the _OSI support (version 1903). Jung- |
| uk Kim |
| |
| Macros: removed pointer math on a null pointer. Causes warnings on some |
| compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR |
| instead of using arithmetic. |
| |
| Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used |
| across all "printf-like" internal functions. Also, cleanup all calls to |
| such functions (both in 32-bit mode and 64-bit mode) now that they are |
| analyzed by the gcc compiler via ACPI_PRINTF_LIKE. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: implemented a new data table compiler flex/bison front-end. This |
| change is internal and is not intended to result in changes to the |
| compiled code. This new compiler front-end can be invoked using the -tp |
| option for now, until the old mechanism is removed. |
| |
| ASLTS: Implemented a new data table compiler test suite. This test suite |
| generates all table templates and compile/disassemble/re-compile/binary- |
| compare each file. |
| |
| iASL: return -1 if AML files were not generated due to compiler errors |
| |
| iASL: added a warning on use of the now-legacy ASL Processor () keyword. |
| |
| iASL: added an error on _UID object declaration that returns a String |
| within a Processor () declaration. A _UID for a processor must be an |
| Integer. |
| |
| iASL: added a null terminator to name strings that consist only of |
| multiple parent prefixes (^) |
| |
| iASL: added support to compile both ASL and data table files in a single |
| command. |
| |
| Updated the tool generation project files that were recently migrated to |
| MSVC 2017 to eliminate all new warnings. The new project files appear in |
| the directory \acpica\generate\msvc2017. This change effectively |
| deprecates the older project files in \acpica\generate\msvc9. |
| |
| |
| ---------------------------------------- |
| 03 July 2019. Summary of changes for version 20190703: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Remove legacy module-level support code. There were still some remnants |
| of the legacy module-level code executions. Since we no longer support |
| this option, this is essentially dead code and has been removed from the |
| ACPICA source. |
| |
| iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root |
| scope. If these named objects are declared outside the root scope, they |
| will not be invoked by any host Operating System. |
| |
| Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC |
| one) can be enabled in two situations. First, the GPEs with existing _Lxx |
| and _Exx methods are enabled implicitly by ACPICA during system |
| initialization. Second, the GPEs without these methods (like GPEs listed |
| by _PRW objects for wakeup devices) need to be enabled directly by the |
| code that is going to use them (e.g. ACPI power management or device |
| drivers). |
| |
| In the former case, if the status of a given GPE is set to start with, |
| its handler method (either _Lxx or _Exx) needs to be invoked to take care |
| of the events (possibly) signaled before the GPE was enabled. In the |
| latter case, however, the first caller of AcpiEnableGpe() for a given GPE |
| should not be expected to care about any events that might be signaled |
| through it earlier. In that case, it is better to clear the status of |
| the GPE before enabling it, to prevent stale events from triggering |
| unwanted actions (like spurious system resume, for example). |
| |
| For this reason, modify AcpiEvAddGpeReference() to take an additional |
| boolean argument indicating whether or not the GPE status needs to be |
| cleared when its reference counter changes from zero to one and make |
| AcpiEnableGpe() pass TRUE to it through that new argument. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| The tool generation process has been migrated to MSVC 2017, and all |
| project files have been upgraded. The new project files appear in the |
| directory \acpica\generate\msvc2017. This change effectively deprecates |
| the older project files in \acpica\generate\msvc9. |
| |
| iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root |
| scope. If these named objects are declared outside the root scope, they |
| will not be invoked by any host Operating System |
| |
| ---------------------------------------- |
| 09 May 2019. Summary of changes for version 20190509: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling |
| them") that causes problems with Thunderbolt controllers to occur if a |
| dock device is connected at init time (the xhci_hcd and thunderbolt |
| modules crash which prevents peripherals connected through them from |
| working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: |
| Dispatch active GPEs at init time") to get undone, so the problem |
| addressed by commit ecc1165b8b74 appears again as a result of it. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| Reverted iASL: Additional forward reference detection. This change |
| reverts forward reference detection for field declarations. The feature |
| unintentionally emitted AML bytecode with incorrect package lengths for |
| some ASL code related to Fields and OperationRegions. This malformed AML |
| can cause systems to crash |
| during boot. The malformed AML bytecode is emitted in iASL version |
| 20190329 and 20190405. |
| |
| iASL: improve forward reference detection. This change improves forward |
| reference detection for named objects inside of scopes. If a parse object |
| has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to |
| a named object that is declared later in the AML bytecode. This is |
| allowed if the reference is inside of a method and the declaration is |
| outside of a method like so: |
| |
| DefinitionBlock(...) |
| { |
| Method (TEST) |
| { |
| Return (NUM0) |
| } |
| Name (NUM0,0) |
| } |
| |
| However, if the declaration and reference are both in the same method or |
| outside any methods, this is a forward reference and should be marked as |
| an error because it would result in runtime errors. |
| |
| DefinitionBlock(...) |
| { |
| Name (BUFF, Buffer (NUM0) {}) // Forward reference |
| Name (NUM0, 0x0) |
| |
| Method (TEST) |
| { |
| Local0 = NUM1 |
| Name (NUM1, 0x1) // Forward reference |
| return (Local0) |
| } |
| } |
| |
| iASL: Implemented additional buffer overflow analysis for BufferField |
| declarations. Check if a buffer index argument to a create buffer field |
| operation is beyond the end of the target buffer. |
| |
| This affects these AML operators: |
| |
| AML_CREATE_FIELD_OP |
| AML_CREATE_BIT_FIELD_OP |
| AML_CREATE_BYTE_FIELD_OP |
| AML_CREATE_WORD_FIELD_OP |
| AML_CREATE_DWORD_FIELD_OP |
| AML_CREATE_QWORD_FIELD_OP |
| |
| There are three conditions that must be satisfied in order to allow this |
| validation at compile time: |
| |
| 1) The length of the target buffer must be an integer constant |
| 2) The index specified in the create* must be an integer constant |
| 3) For CreateField, the bit length argument must be non-zero. |
| |
| Example: |
| Name (BUF1, Buffer() {1,2}) |
| CreateField (BUF1, 7, 9, CF03) // 3: ERR |
| |
| dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR |
| Error 6165 - ^ Buffer index beyond end of |
| target buffer |
| |
| |
| ---------------------------------------- |
| 05 April 2019. Summary of changes for version 20190405: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop |
| unconditionally clearing ACPI IRQs during suspend/resume") was added |
| earlier to stop clearing of event status bits unconditionally on suspend |
| and resume paths. Though this change fixed an issue on suspend path, it |
| introduced regressions on several resume paths. In the case of S0ix, |
| events are enabled as part of device suspend path. If status bits for the |
| events are set when they are enabled, it could result in premature wake |
| from S0ix. If status is cleared for any event that is being enabled so |
| that any stale events are cleared out. In case of S0ix, events are |
| enabled as part of device suspend path. If status bits for the events are |
| set when they are enabled, it could result in premature wake from S0ix. |
| |
| This change ensures that status is cleared for any event that is being |
| enabled so that any stale events are cleared out. |
| |
| |
| 2) iASL Compiler/Disassembler and ACPICA tools: |
| |
| iASL: Implemented an enhanced multiple file compilation that combines |
| named objects from all input files to a single namespace. With this |
| feature, any unresolved external declarations as well as duplicate named |
| object declarations can be detected during compilation rather than |
| generating errors much later at runtime. The following commands are |
| examples that utilize this feature: |
| iasl dsdt.asl ssdt.asl |
| iasl dsdt.asl ssdt1.asl ssdt2.asl |
| iasl dsdt.asl ssdt*.asl |
| |
| ---------------------------------------- |
| 29 March 2019. Summary of changes for version 20190329: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Namespace support: Remove the address nodes from global list after method |
| termination. The global address list contains pointers to namespace nodes |
| that represent Operation Regions. This change properly removes Operation |
| Region namespace nodes that are declared dynamically during method |
| execution. |
| |
| Linux: Use a different debug default than ACPICA. There was a divergence |
| between Linux and the ACPICA codebases. In order to resolve this |
| divergence, Linux now declares its own debug default in aclinux.h |
| |
| Renamed some internal macros to improve code understanding and |
| maintenance. The macros below all operate on single 4-character ACPI |
| NameSegs, not generic strings (old -> new): |
| ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE |
| ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG |
| ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG |
| |
| Fix for missing comma in array declaration for the AcpiGbl_GenericNotify |
| table. |
| |
| Test suite: Update makefiles, add PCC operation region support |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented additional illegal forward reference detection. Now |
| detect and emit an error upon detection of a forward reference from a |
| Field to an Operation Region. This will fail at runtime if allowed to |
| pass the compiler. |
| |
| AcpiExec: Add an address list check for dynamic Operation Regions. This |
| feature performs a sanity test for each node the global address list. |
| This is done in order to ensure that all dynamic operation regions are |
| properly removed from the global address list and no dangling pointers |
| are left behind. |
| |
| Disassembler: Improved generation of resource pathnames. This change |
| improves the code that generates resource descriptor and resource tag |
| pathnames. The original code used a bunch of str* C library functions |
| that caused warnings on some compilers. |
| |
| iASL: Removed some uses of strncpy and replaced with memmove. The strncpy |
| function can overwrite buffers if the calling code is not very careful. |
| In the case of generating a module/table header, use of memmove is a |
| better implementation. |
| |
| |
| 3) Status of new features that have not been completed at this time: |
| |
| iASL: Implementing an enhanced multiple file compilation into a single |
| namespace feature (Status): This feature will be released soon, and |
| allows multiple ASL files to be compiled into the same single namespace. |
| By doing so, any unresolved external declarations as well as duplicate |
| named object declarations can be detected during compilation (rather than |
| later during runtime). The following commands are examples that utilize |
| this feature: |
| iasl dsdt.asl ssdt.asl |
| iasl dsdt.asl ssdt1.asl ssdt2.asl |
| iasl dsdt.asl ssdt*.asl |
| |
| ASL tutorial status: Feedback is being gathered internally and the |
| current plan is to publish this tutorial on the ACPICA website after a |
| final review by a tech writer. |
| |
| ---------------------------------------- |
| 15 February 2019. Summary of changes for version 20190215: |
| |
| |
| 0) Support for ACPI specification version 6.3: |
| |
| Add PCC operation region support for the AML interpreter. This adds PCC |
| operation region support in the AML interpreter and a default handler for |
| acpiexec. The change also renames the PCC region address space keyword to |
| PlatformCommChannel. |
| |
| Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. |
| These methods provide OSPM with health information and device boot |
| status. |
| |
| PDTT: Add TriggerOrder to the PCC Identifier structure. The field value |
| defines if the trigger needs to be invoked by OSPM before or at the end |
| of kernel crash dump processing/handling operation. |
| |
| SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT |
| is used for describing devices such as heterogeneous processors, |
| accelerators, GPUs, and IO devices with integrated compute or DMA |
| engines. |
| |
| MADT: Add support for statistical profiling in GICC. Statistical |
| profiling extension (SPE) is an architecture-specific feature for ARM. |
| |
| MADT: Add online capable flag. If this bit is set, system hardware |
| supports enabling this processor during OS runtime. |
| |
| New Error Disconnect Recover Notification value. There are a number of |
| scenarios where system Firmware in collaboration with hardware may |
| disconnect one or more devices from the rest of the system for purposes |
| of error containment. Firmware can use this new notification value to |
| alert OSPM of such a removal. |
| |
| PPTT: New additional fields in Processor Structure Flags. These flags |
| provide more information about processor topology. |
| |
| NFIT/Disassembler: Change a field name from "Address Range" to "Region |
| Type". |
| |
| HMAT updates: make several existing fields to be reserved as well as |
| rename subtable 0 to "memory proximity domain attributes". |
| |
| GTDT: Add support for new GTDT Revision 3. This revision adds information |
| for the EL2 timer. |
| |
| iASL: Update the HMAT example template for new fields. |
| |
| iASL: Add support for the new revision of the GTDT (Rev 3). |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| AML Parser: fix the main AML parse loop to correctly skip erroneous |
| extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- |
| byte extended opcodes. If an error occurs during an AML table load, the |
| AML parser will continue loading the table by skipping the offending |
| opcode. This implements a "load table at any cost" philosophy. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Add checks for illegal object references, such as a reference |
| outside of method to an object within a method. Such an object is only |
| temporary. |
| |
| iASL: Emit error for creation of a zero-length operation region. Such a |
| region is rather pointless. If encountered, a runtime error is also |
| implemented in the interpreter. |
| |
| Debugger: Fix a possible fault with the "test objects" command. |
| |
| iASL: Makefile: support parent directory filenames containing embedded |
| spaces. |
| |
| iASL: Update the TPM2 template to revision 4. |
| |
| iASL: Add the ability to report specific warnings or remarks as errors. |
| |
| Disassembler: Disassemble OEMx tables as actual AML byte code. |
| Previously, these tables were treated as "unknown table". |
| |
| iASL: Add definition and disassembly for TPM2 revision 3. |
| |
| iASL: Add support for TPM2 rev 3 compilation. |
| |
| |
| ---------------------------------------- |
| 08 January 2019. Summary of changes for version 20190108: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all copyrights to 2019. This affects all source code modules. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| ASL test suite (ASLTS): Updated all copyrights to 2019. |
| |
| Tools: Updated all signon copyrights to 2019. |
| |
| AcpiExec: Added a new option to dump extra information concerning any |
| memory leaks detected by the internal object/cache tracking mechanism. - |
| va |
| |
| iASL: Updated the table template for the TPM2 table to the newest version |
| of the table (Revision 4) |
| |
| |
| ---------------------------------------- |
| 13 December 2018. Summary of changes for version 20181213: |
| |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Fixed some buffer length issues with the GenericSerialBus, related to two |
| of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, |
| which are rarely seen in the field. For these, the LEN field of the ASL |
| buffer is now ignored. Hans de Goede |
| |
| Implemented a new object evaluation trace mechanism for control methods |
| and data objects. This includes nested control methods. It is |
| particularly useful for examining the ACPI execution during system |
| initialization since the output is relatively terse. The flag below |
| enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: |
| #define ACPI_LV_EVALUATION 0x00080000 |
| |
| Examples: |
| Enter evaluation : _SB.PCI0._INI (Method) |
| Exit evaluation : _SB.PCI0._INI |
| Enter evaluation : _OSI (Method) |
| Exit evaluation : _OSI |
| Enter evaluation : _SB.PCI0.TEST (Method) |
| Nested method call : _SB.PCI0.NST1 |
| Exit nested method : _SB.PCI0.NST1 |
| Exit evaluation : _SB.PCI0.TEST |
| |
| Added two recently-defined _OSI strings. See |
| https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- |
| osi. |
| "Windows 2018" |
| "Windows 2018.2" |
| |
| Update for buffer-to-string conversions via the ToHexString ASL operator. |
| A "0x" is now prepended to each of the hex values in the output string. |
| This provides compatibility with other ACPI implementations. The ACPI |
| specification is somewhat vague on this issue. |
| Example output string after conversion: |
| "0x01,0x02,0x03,0x04,0x05,0x06" |
| |
| Return a run-time error for TermArg expressions within individual package |
| elements. Although this is technically supported by the ASL grammar, |
| other ACPI implementations do not support this either. Also, this fixes a |
| fault if this type of construct is ever encountered (it never has been). |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented a new compile option (-ww) that will promote individual |
| warnings and remarks to errors. This is intended to enhance the firmware |
| build process. |
| |
| AcpiExec: Implemented a new command-line option (-eo) to support the new |
| object evaluation trace mechanism described above. |
| |
| Disassembler: Added support to disassemble OEMx tables as AML/ASL tables |
| instead of a "unknown table" message. |
| |
| AcpiHelp: Improved support for the "special" predefined names such as |
| _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be |
| used for "xx" and "x". |
| |
| ---------------------------------------- |
| 31 October 2018. Summary of changes for version 20181031: |
| |
| |
| An Operation Region regression was fixed by properly adding address |
| ranges to a global list during initialization. This allows OS to |
| accurately check for overlapping regions between native devices (such as |
| PCI) and Operation regions as well as checking for region conflicts |
| between two Operation Regions. |
| |
| Added support for the 2-byte extended opcodes in the code/feature that |
| attempts to continue parsing during the table load phase. Skip parsing |
| Device declarations (and other extended opcodes) when an error occurs |
| during parsing. Previously, only single-byte opcodes were supported. |
| |
| Cleanup: Simplified the module-level code support by eliminating a |
| useless global variable (AcpiGbl_GroupModuleLeveCode). |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE |
| could cause a fault in the preprocessor. This was an inadvertent side- |
| effect from moving more allocations/frees to the local cache/memory |
| mechanism. |
| |
| iASL: Enhanced error detection by validating that all NameSeg elements |
| within a NamePatch actually exist. The previous behavior was spotty at |
| best, and such errors could be improperly ignored at compiler time (never |
| at runtime, however. There are two new error messages, as shown in the |
| examples below: |
| |
| dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) |
| Error 6161 - ^ One or more objects within |
| the Pathname do not exist (TTTT.BXXX) |
| |
| dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) |
| Error 6160 - One or more prefix Scopes do not exist ^ |
| (BBBB.CBF1) |
| |
| iASL: Disassembler/table-compiler: Added support for the static data |
| table TPM2 revision 3 (an older version of TPM2). The support has been |
| added for the compiler and the disassembler. |
| |
| Fixed compilation of DOS format data table file on Unix/Linux systems. |
| iASL now properly detects line continuations (\) for DOS format data |
| table definition language files on when executing on Unix/Linux. |
| |
| ---------------------------------------- |
| 03 October 2018. Summary of changes for version 20181003: |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a regression introduced in version 20180927 that could cause the |
| compiler to fault, especially with NamePaths containing one or more |
| carats (^). Such as: ^^_SB_PCI0 |
| |
| Added a new remark for the Sleep() operator when the sleep time operand |
| is larger than one second. This is a very long time for the ASL/BIOS code |
| and may not be what was intended by the ASL writer. |
| |
| ---------------------------------------- |
| 27 September 2018. Summary of changes for version 20180927: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated the GPE support to clear the status of all ACPI events when |
| entering any/all sleep states in order to avoid premature wakeups. In |
| theory, this may cause some wakeup events to be missed, but the |
| likelihood of this is small. This change restores the original behavior |
| of the ACPICA code in order to fix a regression seen from the previous |
| "Stop unconditionally clearing ACPI IRQs during suspend/resume" change. |
| This regression could cause some systems to incorrectly wake immediately. |
| |
| Updated the execution of the _REG methods during initialization and |
| namespace loading to bring the behavior into closer conformance to the |
| ACPI specification and other ACPI implementations: |
| |
| From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): |
| "Control methods must assume all operation regions are inaccessible |
| until the _REG(RegionSpace, 1) method is executed" |
| |
| "The exceptions to this rule are: |
| 1. OSPM must guarantee that the following operation regions are always |
| accessible: |
| SystemIO operation regions. |
| SystemMemory operation regions when accessing memory returned by the |
| System Address Map reporting interfaces." |
| |
| Since the state of both the SystemIO and SystemMemory address spaces are |
| defined by the specification to never change, this ACPICA change ensures |
| that now _REG is never called on them. This solves some problems seen in |
| the field and provides compatibility with other ACPI implementations. An |
| update to the upcoming new version of the ACPI specification will help |
| clarify this behavior. |
| |
| Updated the implementation of support for the Generic Serial Bus. For the |
| "bidirectional" protocols, the internal implementation now automatically |
| creates a return data buffer of the maximum size (255). This handles the |
| worst-case for data that is returned from the serial bus handler, and |
| fixes some problems seen in the field. This new buffer is directly |
| returned to the ASL. As such, there is no true "bidirectional" buffer, |
| which matches the ACPI specification. This is the reason for the "double |
| store" seen in the example ASL code in the specification, shown below: |
| |
| Word Process Call (AttribProcessCall): |
| OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) |
| Field(TOP1, BufferAcc, NoLock, Preserve) |
| { |
| FLD1, 8, // Virtual register at command value 1. |
| } |
| |
| Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer |
| // as BUFF |
| CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) |
| |
| Store(0x5416, DATA) // Save 0x5416 into the data buffer |
| Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call |
| transaction |
| // This is the "double store". The write to |
| // FLD1 returns a new buffer, which is stored |
| // back into BUFF with the second Store. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented detection of extraneous/redundant uses of the Offset() |
| operator within a Field Unit list. A remark is now issued for these. For |
| example, the first two of the Offset() operators below are extraneous. |
| Because both the compiler and the interpreter track the offsets |
| automatically, these Offsets simply refer to the current offset and are |
| unnecessary. Note, when optimization is enabled, the iASL compiler will |
| in fact remove the redundant Offset operators and will not emit any AML |
| code for them. |
| |
| OperationRegion (OPR1, SystemMemory, 0x100, 0x100) |
| Field (OPR1) |
| { |
| Offset (0), // Never needed |
| FLD1, 32, |
| Offset (4), // Redundant, offset is already 4 (bytes) |
| FLD2, 8, |
| Offset (64), // OK use of Offset. |
| FLD3, 16, |
| } |
| dsdt.asl 14: Offset (0), |
| Remark 2158 - ^ Unnecessary/redundant use of Offset |
| operator |
| |
| dsdt.asl 16: Offset (4), |
| Remark 2158 - ^ Unnecessary/redundant use of Offset |
| operator |
| |
| ---------------------------------------- |
| 10 August 2018. Summary of changes for version 20180810: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Initial ACPI table loading: Attempt to continue loading ACPI tables |
| regardless of malformed AML. Since migrating table initialization to the |
| new module-level code support, the AML interpreter rejected tables upon |
| any ACPI error encountered during table load. This is a problem because |
| non-serious ACPI errors during table load do not necessarily mean that |
| the entire definition block (DSDT or SSDT) is invalid. This change |
| improves the table loading by ignoring some types of errors that can be |
| generated by incorrect AML. This can range from object type errors, scope |
| errors, and index errors. |
| |
| Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs |
| during suspend/resume. The status of ACPI events is no longer cleared |
| when entering the ACPI S5 system state (power off) which caused some |
| systems to power up immediately after turning off power in certain |
| situations. This was a functional regression. It was fixed by clearing |
| the status of all ACPI events again when entering S5 (for system-wide |
| suspend or hibernation the clearing of the status of all events is not |
| desirable, as it might cause the kernel to miss wakeup events sometimes). |
| Rafael Wysocki. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Enhanced the -fi option (Namespace initialization file). Field |
| elements listed in the initialization file were previously initialized |
| after the table load and before executing module-level code blocks. |
| Recent changes in the module-level code support means that the table load |
| becomes a large control method execution. If fields are used within |
| module-level code and we are executing with the -fi option, the |
| initialization values were used to initialize the namespace object(s) |
| only after the table was finished loading. This change Provides an early |
| initialization of objects specified in the initialization file so that |
| field unit values are populated during the table load (not after the |
| load). |
| |
| AcpiExec: Fixed a small memory leak regression that could result in |
| warnings during exit of the utility. These warnings were similar to |
| these: |
| 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] |
| 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 |
| |
| ---------------------------------------- |
| 29 June 2018. Summary of changes for version 20180629: |
| |
| |
| 1) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a regression related to the use of the ASL External |
| statement. Error checking for the use of the External() statement has |
| been relaxed. Previously, a restriction on the use of External meant that |
| the referenced named object was required to be defined in a different |
| table (an SSDT). Thus it would be an error to declare an object as an |
| external and then define the same named object in the same table. For |
| example: |
| DefinitionBlock (...) |
| { |
| External (DEV1) |
| Device (DEV1){...} // This was an error |
| } |
| However, this behavior has caused regressions in some existing ASL code, |
| because there is code that depends on named objects and externals (with |
| the same name) being declared in the same table. This change will allow |
| the ASL code above to compile without errors or warnings. |
| |
| iASL: Implemented ASL language extensions for four operators to make some |
| of their arguments optional instead of required: |
| 1) Field (RegionName, AccessType, LockRule, UpdateRule) |
| 2) BankField (RegionName, BankName, BankValue, |
| AccessType, LockRule, UpdateRule) |
| 3) IndexField (IndexName, DataName, |
| AccessType, LockRule, UpdateRule) |
| For the Field operators above, the AccessType, LockRule, and UpdateRule |
| are now optional arguments. The default values are: |
| AccessType: AnyAcc |
| LockRule: NoLock |
| UpdateRule: Preserve |
| 4) Mutex (MutexName, SyncLevel) |
| For this operator, the SyncLevel argument is now optional. This argument |
| is rarely used in any meaningful way by ASL code, and thus it makes sense |
| to make it optional. The default value is: |
| SyncLevel: 0 |
| |
| iASL: Attempted use of the ASL Unload() operator now results in the |
| following warning: |
| "Unload is not supported by all operating systems" |
| This is in fact very true, and the Unload operator may be completely |
| deprecated in the near future. |
| |
| AcpiExec: Fixed a regression for the -fi option (Namespace initialization |
| file. Recent changes in the ACPICA module-level code support altered the |
| table load/initialization sequence . This means that the table load has |
| become a large method execution of the table itself. If Operation Region |
| Fields are used within any module-level code and the -fi option was |
| specified, the initialization values were populated only after the table |
| had completely finished loading (and thus the module-level code had |
| already been executed). This change moves the initialization of objects |
| listed in the initialization file to before the table is executed as a |
| method. Field unit values are now initialized before the table execution |
| is performed. |
| |
| ---------------------------------------- |
| 31 May 2018. Summary of changes for version 20180531: |
| |
| |
| 1) ACPICA kernel-resident Subsystem: |
| |
| Implemented additional support to help ensure that a DSDT or SSDT is |
| fully loaded even if errors are incurred during the load. The majority of |
| the problems that are seen is the failure of individual AML operators |
| that occur during execution of any module-level code (MLC) existing in |
| the table. This support adds a mechanism to abort the current ASL |
| statement (AML opcode), emit an error message, and to simply move on to |
| the next opcode -- instead of aborting the entire table load. This is |
| different than the execution of a control method where the entire method |
| is aborted upon any error. The goal is to perform a very "best effort" to |
| load the ACPI tables. The most common MLC errors that have been seen in |
| the field are direct references to unresolved ASL/AML symbols (referenced |
| directly without the use of the CondRefOf operator to validate the |
| symbol). This new ACPICA behavior is now compatible with other ACPI |
| implementations. |
| |
| Interpreter: The Unload AML operator is no longer supported for the |
| reasons below. An AE_NOT_IMPLEMENTED exception is returned. |
| 1) A correct implementation on at least some hosts may not be possible. |
| 2) Other ACPI implementations do not correctly/fully support it. |
| 3) It requires host device driver support which is not known to exist. |
| (To properly support namespace unload out from underneath.) |
| 4) This AML operator has never been seen in the field. |
| |
| Parser: Added a debug option to dump AML parse sub-trees as they are |
| being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is |
| ACPI_DB_PARSE_TREES. |
| |
| Debugger: Reduced the verbosity for errors incurred during table load and |
| module-level code execution. |
| |
| Completed an investigation into adding a namespace node "owner list" |
| instead of the current "owner ID" associated with namespace nodes. This |
| list would link together all nodes that are owned by an individual |
| control method. The purpose would be to enhance control method execution |
| by speeding up cleanup during method exit (all namespace nodes created by |
| a method are deleted upon method termination.) Currently, the entire |
| namespace must be searched for matching owner IDs if (and only if) the |
| method creates named objects outside of the local scope. However, by far |
| the most common case is that methods create objects locally, not outside |
| the method scope. There is already an ACPICA optimization in place that |
| only searches the entire namespace in the rare case of a method creating |
| objects elsewhere in the namespace. Therefore, it is felt that the |
| overhead of adding an additional pointer to each namespace node to |
| implement the owner list makes this feature unnecessary. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL, Disassembler, and Template generator: Implemented support for |
| Revision D of the IORT table. Adds a new subtable that is used to specify |
| SMMUv3 PMCGs. rmurphy-arm. |
| |
| Disassembler: Restored correct table header validation for the "special" |
| ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI |
| table header and must be special-cased. This was a regression that has |
| been present for apparently a long time. |
| |
| AcpiExec: Reduced verbosity of the local exception handler implemented |
| within acpiexec. This handler is invoked by ACPICA upon any exceptions |
| generated during control method execution. A new option was added: -vh |
| restores the original verbosity level if desired. |
| |
| AcpiExec: Changed the default base from decimal to hex for the -x option |
| (set debug level). This simplifies the use of this option and matches the |
| behavior of the corresponding iASL -x option. |
| |
| AcpiExec: Restored a force-exit on multiple control-c (sigint) |
| interrupts. This allows program termination even if other issues cause |
| the control-c to fail. |
| |
| ASL test suite (ASLTS): Added tests for the recently implemented package |
| element resolution mechanism that allows forward references to named |
| objects from individual package elements (this mechanism provides |
| compatibility with other ACPI implementations.) |
| |
| |
| ---------------------------------------- |
| 8 May 2018. Summary of changes for version 20180508: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Completed the new (recently deployed) package resolution mechanism for |
| the Load and LoadTable ASL/AML operators. This fixes a regression that |
| was introduced in version 20180209 that could result in an |
| AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table |
| (SSDT) that contains package objects. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than |
| 1 MB. This change allows for table offsets within the acpidump file to be |
| up to 8 characters. These changes are backwards compatible with existing |
| acpidump files. |
| |
| |
| ---------------------------------------- |
| 27 April 2018. Summary of changes for version 20180427: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Debugger: Added support for Package objects in the "Test Objects" |
| command. This command walks the entire namespace and evaluates all named |
| data objects (Integers, Strings, Buffers, and now Packages). |
| |
| Improved error messages for the namespace root node. Originally, the root |
| was referred to by the confusing string "\___". This has been replaced by |
| "Namespace Root" for clarification. |
| |
| Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin |
| Ian King <colin.king@canonical.com>. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented support to detect and flag illegal forward references. |
| For compatibility with other ACPI implementations, these references are |
| now illegal at the root level of the DSDT or SSDTs. Forward references |
| have always been illegal within control methods. This change should not |
| affect existing ASL/AML code because of the fact that these references |
| have always been illegal in the other ACPI implementation. |
| |
| iASL: Added error messages for the case where a table OEM ID and OEM |
| TABLE ID strings are longer than the ACPI-defined length. Previously, |
| these strings were simply silently truncated. |
| |
| iASL: Enhanced the -tc option (which creates an AML hex file in C, |
| suitable for import into a firmware project): |
| 1) Create a unique name for the table, to simplify use of multiple |
| SSDTs. |
| 2) Add a protection #ifdef in the file, similar to a .h header file. |
| With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, |
| evan.lloyd@arm.com |
| |
| AcpiExec: Added a new option, -df, to disable the local fault handler. |
| This is useful during debugging, where it may be desired to drop into a |
| debugger on a fault. |
| |
| ---------------------------------------- |
| 13 March 2018. Summary of changes for version 20180313: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented various improvements to the GPE support: |
| |
| 1) Dispatch all active GPEs at initialization time so that no GPEs are |
| lost. |
| 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled |
| before devices are enumerated. |
| 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that |
| IRQs are not lost. |
| 4) Add parallel GPE handling to eliminate the possibility of dispatching |
| the same GPE twice. |
| 5) Dispatch any pending GPEs after enabling for the first time. |
| |
| AcpiGetObjectInfo - removed support for the _STA method. This was causing |
| problems on some platforms. |
| |
| Added a new _OSI string, "Windows 2017.2". |
| |
| Cleaned up and simplified the module-level code support. These changes |
| are in preparation for the eventual removal of the legacy MLC support |
| (deferred execution), replaced by the new MLC architecture which executes |
| the MLC as a table is loaded (DSDT/SSDTs). |
| |
| Changed a compile-time option to a runtime option. Changes the option to |
| ignore ACPI table load-time package resolution errors into a runtime |
| option. Used only for platforms that generate many AE_NOT_FOUND errors |
| during boot. AcpiGbl_IgnorePackageResolutionErrors. |
| |
| Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some |
| ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid |
| compilation errors from unused variables (seen with some compilers). |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| ASLTS: parallelized execution in order to achieve an (approximately) 2X |
| performance increase. |
| |
| ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves |
| error reporting. |
| |
| ---------------------------------------- |
| 09 February 2018. Summary of changes for version 20180209: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Completed the final integration of the recent changes to Package Object |
| handling and the module-level AML code support. This allows forward |
| references from individual package elements when the package object is |
| declared from within module-level code blocks. Provides compatibility |
| with other ACPI implementations. |
| |
| The new architecture for the AML module-level code has been completed and |
| is now the default for the ACPICA code. This new architecture executes |
| the module-level code in-line as the ACPI table is loaded/parsed instead |
| of the previous architecture which deferred this code until after the |
| table was fully loaded. This solves some ASL code ordering issues and |
| provides compatibility with other ACPI implementations. At this time, |
| there is an option to fallback to the earlier architecture, but this |
| support is deprecated and is planned to be completely removed later this |
| year. |
| |
| Added a compile-time option to ignore AE_NOT_FOUND exceptions during |
| resolution of named reference elements within Package objects. Although |
| this is potentially a serious problem, it can generate a lot of |
| noise/errors on platforms whose firmware carries around a bunch of unused |
| Package objects. To disable these errors, define |
| ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All |
| errors are always reported for ACPICA applications such as AcpiExec. |
| |
| Fixed a regression related to the explicit type-conversion AML operators |
| (ToXXXX). The regression was introduced early in 2017 but was not seen |
| until recently because these operators are not fully supported by other |
| ACPI implementations and are thus rarely used by firmware developers. The |
| operators are defined by the ACPI specification to not implement the |
| "implicit result object conversion". The regression incorrectly |
| introduced this object conversion for the following explicit conversion |
| operators: |
| ToInteger |
| ToString |
| ToBuffer |
| ToDecimalString |
| ToHexString |
| ToBCD |
| FromBCD |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem with the compiler constant folding feature as |
| related to the ToXXXX explicit conversion operators. These operators do |
| not support the "implicit result object conversion" by definition. Thus, |
| ASL expressions that use these operators cannot be folded to a simple |
| Store operator because Store implements the implicit conversion. This |
| change uses the CopyObject operator for the ToXXXX operator folding |
| instead. CopyObject is defined to not implement implicit result |
| conversions and is thus appropriate for folding the ToXXXX operators. |
| |
| iASL: Changed the severity of an error condition to a simple warning for |
| the case where a symbol is declared both locally and as an external |
| symbol. This accommodates existing ASL code. |
| |
| AcpiExec: The -ep option to enable the new architecture for module-level |
| code has been removed. It is replaced by the -dp option which instead has |
| the opposite effect: it disables the new architecture (the default) and |
| enables the legacy architecture. When the legacy code is removed in the |
| future, the -dp option will be removed also. |
| |
| ---------------------------------------- |
| 05 January 2018. Summary of changes for version 20180105: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all copyrights to 2018. This affects all source code modules. |
| |
| Fixed a possible build error caused by an unresolved reference to the |
| AcpiUtSafeStrncpy function. |
| |
| Removed NULL pointer arithmetic in the various pointer manipulation |
| macros. All "(void *) NULL" constructs are converted to "(void *) 0". |
| This eliminates warnings/errors in newer C compilers. Jung-uk Kim. |
| |
| Added support for A32 ABI compilation, which uses the ILP32 model. Anuj |
| Mittal. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| ASLTS: Updated all copyrights to 2018. |
| |
| Tools: Updated all signon copyrights to 2018. |
| |
| AcpiXtract: Fixed a regression related to ACPI table signatures where the |
| signature was truncated to 3 characters (instead of 4). |
| |
| AcpiExec: Restore the original terminal mode after the use of the -v and |
| -vd options. |
| |
| ASLTS: Deployed the iASL __METHOD__ macro across the test suite. |
| |
| ---------------------------------------- |
| 14 December 2017. Summary of changes for version 20171214: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression in the external (public) AcpiEvaluateObjectTyped |
| interface where the optional "pathname" argument had inadvertently become |
| a required argument returning an error if omitted (NULL pointer |
| argument). |
| |
| Fixed two possible memory leaks related to the recently developed "late |
| resolution" of reference objects within ASL Package Object definitions. |
| |
| Added two recently defined _OSI strings: "Windows 2016" and "Windows |
| 2017". Mario Limonciello. |
| |
| Implemented and deployed a safer version of the C library function |
| strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the |
| creation of unterminated strings as a possible result of a standard |
| strncpy. |
| |
| Cleaned up and restructured the global variable file (acglobal.h). There |
| are many changes, but no functional changes. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the |
| optional OemData field at the end of the table was incorrectly required |
| for proper compilation. It is now correctly an optional field. |
| |
| ASLTS: The entire suite was converted from standard ASL to the ASL+ |
| language, using the ASL-to-ASL+ converter which is integrated into the |
| iASL compiler. A binary compare of all output files has verified the |
| correctness of the conversion. |
| |
| iASL: Fixed the source code build for platforms where "char" is unsigned. |
| This affected the iASL lexer only. Jung-uk Kim. |
| |
| ---------------------------------------- |
| 10 November 2017. Summary of changes for version 20171110: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| This release implements full support for ACPI 6.2A: |
| NFIT - Added a new subtable, "Platform Capabilities Structure" |
| No other changes to ACPICA were required, since ACPI 6.2A is primarily an |
| errata release of the specification. |
| |
| Other ACPI table changes: |
| IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo |
| PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy |
| Linton |
| |
| Utilities: Modified the string/integer conversion functions to use |
| internal 64-bit divide support instead of a native divide. On 32-bit |
| platforms, a 64-bit divide typically requires a library function which |
| may not be present in the build (kernel or otherwise). |
| |
| Implemented a targeted error message for timeouts returned from the |
| Embedded Controller device driver. This is seen frequently enough to |
| special-case an AE_TIME returned from an EC operation region access: |
| "Timeout from EC hardware or EC device driver" |
| |
| Changed the "ACPI Exception" message prefix to "ACPI Error" so that all |
| runtime error messages have the identical prefix. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiXtract: Fixed a problem with table header detection within the |
| acpidump file. Processing a table could be ended early if a 0x40 (@) |
| appears in the original binary table, resulting in the @ symbol appearing |
| in the decoded ASCII field at the end of the acpidump text line. The |
| symbol caused acpixtract to incorrectly think it had reached the end of |
| the current table and the beginning of a new table. |
| |
| AcpiXtract: Added an option (-f) to ignore some errors during table |
| extraction. This initial implementation ignores non-ASCII and non- |
| printable characters found in the acpidump text file. |
| |
| TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics |
| for ASLTS. This feature is used to track memory allocations from |
| different memory caches within the ACPICA code. At the end of an ASLTS |
| run, these memory statistics are recorded and stored in a log file. |
| |
| Debugger (user-space version): Implemented a simple "Background" command. |
| Creates a new thread to execute a control method in the background, while |
| control returns to the debugger prompt to allow additional commands. |
| Syntax: Background <Namepath> [Arguments] |
| |
| ---------------------------------------- |
| 29 September 2017. Summary of changes for version 20170929: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Redesigned and implemented an improved ASL While() loop timeout |
| mechanism. This mechanism is used to prevent infinite loops in the kernel |
| AML interpreter caused by either non-responsive hardware or incorrect AML |
| code. The new implementation uses AcpiOsGetTimer instead of a simple |
| maximum loop count, and is thus more accurate and constant across |
| different machines. The default timeout is currently 30 seconds, but this |
| may be adjusted later. |
| |
| Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to |
| better reflect the new implementation of the loop timeout mechanism. |
| |
| Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support |
| and to fix an off-by-one error. Jung-uk Kim. |
| |
| Fixed an EFI build problem by updating the makefiles to for a new file |
| that was added, utstrsuppt.c |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This |
| includes support in the table disassembler, compiler, and template |
| generator. |
| |
| iASL: Added an exception for an illegal type of recursive method |
| invocation. If a method creates named objects, the first recursive call |
| will fail at runtime. This change adds an error detection at compile time |
| to catch the problem up front. Note: Marking such a method as |
| "serialized" will not help with this problem, because the same thread can |
| acquire the method mutex more than once. Example compiler and runtime |
| output: |
| |
| Method (MTH1) |
| { |
| Name (INT1, 1) |
| MTH1 () |
| } |
| |
| dsdt.asl 22: MTH1 () |
| Error 6152 - ^ Illegal recursive call to method |
| that creates named objects (MTH1) |
| |
| Previous runtime exception: |
| ACPI Error: [INT1] Namespace lookup failure, |
| AE_ALREADY_EXISTS (20170831/dswload2-465) |
| |
| iASL: Updated support for External() opcodes to improve namespace |
| management and error detection. These changes are related to issues seen |
| with multiple-segment namespace pathnames within External declarations, |
| such as below: |
| |
| External(\_SB.PCI0.GFX0, DeviceObj) |
| External(\_SB.PCI0.GFX0.ALSI) |
| |
| iASL: Implemented support for multi-line error/warning messages. This |
| enables more detailed and helpful error messages as below, from the |
| initial deployment for the duplicate names error: |
| |
| DSDT.iiii 1692: Device(PEG2) { |
| Error 6074 - ^ Name already exists in scope |
| (PEG2) |
| |
| Original name creation/declaration below: |
| DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) |
| |
| AcpiXtract: Added additional flexibility to support differing input hex |
| dump formats. Specifically, hex dumps that contain partial disassembly |
| and/or comments within the ACPI table data definition. There exist some |
| dump utilities seen in the field that create this type of hex dump (such |
| as Simics). For example: |
| |
| DSDT @ 0xdfffd0c0 (10999 bytes) |
| Signature DSDT |
| Length 10999 |
| Revision 1 |
| Checksum 0xf3 (Ok) |
| OEM_ID BXPC |
| OEM_table_id BXDSDT |
| OEM_revision 1 |
| Creator_id 1280593481 |
| Creator_revision 537399345 |
| 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 |
| ... |
| 2af0: 5f 4c 30 46 00 a4 01 |
| |
| Test suite: Miscellaneous changes/fixes: |
| More cleanup and simplification of makefiles |
| Continue compilation of test cases after a compile failure |
| Do not perform binary compare unless both files actually exist |
| |
| iASL: Performed some code/module restructuring. Moved all memory |
| allocation functions to new modules. Two new files, aslallocate.c and |
| aslcache.c |
| |
| ---------------------------------------- |
| 31 August 2017. Summary of changes for version 20170831: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented internal support for full 64-bit addresses that appear in all |
| Generic Address Structure (GAS) structures. Previously, only the lower 32 |
| bits were used. Affects the use of GAS structures in the FADT and other |
| tables, as well as the GAS structures passed to the AcpiRead and |
| AcpiWrite public external interfaces that are used by drivers. Lv Zheng. |
| |
| Added header support for the PDTT ACPI table (Processor Debug Trigger |
| Table). Full support in the iASL Data Table Compiler and disassembler is |
| forthcoming. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor |
| Properties Topology Table) where a flag bit was specified in the wrong |
| bit position ("Line Size Valid", bit 6). |
| |
| iASL: Implemented support for Octal integer constants as defined by the |
| ASL language grammar, per the ACPI specification. Any integer constant |
| that starts with a zero is an octal constant. For example, |
| Store (037777, Local0) /* Octal constant */ |
| Store (0x3FFF, Local0) /* Hex equivalent */ |
| Store (16383, Local0) /* Decimal equivalent */ |
| |
| iASL: Improved overflow detection for 64-bit string conversions during |
| compilation of integer constants. "Overflow" in this case means a string |
| that represents an integer that is too large to fit into a 64-bit value. |
| Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to |
| the low-order 32 bits with a warning, as previously implemented. Several |
| new exceptions are defined that indicate a 64-bit overflow, as well as |
| the base (radix) that was used during the attempted conversion. Examples: |
| Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW |
| Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW |
| Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW |
| |
| iASL: Added a warning for the case where a ResourceTemplate is declared |
| with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In |
| this case, the resulting template is created with a single END_TAG |
| descriptor, which is essentially useless. |
| |
| iASL: Expanded the -vw option (ignore specific warnings/remarks) to |
| include compilation error codes as well. |
| |
| ---------------------------------------- |
| 28 July 2017. Summary of changes for version 20170728: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression seen with small resource descriptors that could cause |
| an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. |
| |
| AML interpreter: Implemented a new feature that allows forward references |
| from individual named references within package objects that are |
| contained within blocks of "module-level code". This provides |
| compatibility with other ACPI implementations and supports existing |
| firmware that depends on this feature. Example: |
| |
| Name (ABCD, 1) |
| If (ABCD) /* An If() at module-level */ |
| { |
| Name (PKG1, Package() |
| { |
| INT1 /* Forward reference to object INT1 |
| */ |
| }) |
| Name (INT1, 0x1234) |
| } |
| |
| AML Interpreter: Fixed a problem with the Alias() operator where aliases |
| to some ASL objects were not handled properly. Objects affected are: |
| Mutex, Event, and OperationRegion. |
| |
| AML Debugger: Enhanced to properly handle AML Alias objects. These |
| objects have one level of indirection which was not fully supported by |
| the debugger. |
| |
| Table Manager: Added support to detect and ignore duplicate SSDTs within |
| the XSDT/RSDT. This error in the XSDT has been seen in the field. |
| |
| EFI and EDK2 support: |
| Enabled /WX flag for MSVC builds |
| Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer |
| Added local support for 64-bit multiply and shift operations |
| Added support to compile acpidump.efi on Windows |
| Added OSL function stubs for interfaces not used under EFI |
| |
| Added additional support for the _DMA predefined name. _DMA returns a |
| buffer containing a resource template. This change add support within the |
| resource manager (AcpiWalkResourceBuffer) to walk and parse this list of |
| resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem where the internal input line buffer(s) could |
| overflow if there are very long lines in the input ASL source code file. |
| Implemented buffer management that automatically increases the size of |
| the buffers as necessary. |
| |
| iASL: Added an option (-vx) to "expect" particular remarks, warnings and |
| errors. If the specified exception is not raised during compilation, the |
| compiler emits an error. This is intended to support the ASL test suite, |
| but may be useful in other contexts. |
| |
| iASL: Implemented a new predefined macro, __METHOD__, which returns a |
| string containing the name of the current control method that is being |
| compiled. |
| |
| iASL: Implemented debugger and table compiler support for the SDEI ACPI |
| table (Software Delegated Exception Interface). James Morse |
| <james.morse@arm.com> |
| |
| Unix/Linux makefiles: Added an option to disable compile optimizations. |
| The disable occurs when the NOOPT flag is set to TRUE. |
| theracermaster@gmail.com |
| |
| Acpidump: Added support for multiple DSDT and FACS tables. This can occur |
| when there are different tables for 32-bit versus 64-bit. |
| |
| Enhanced error reporting for the ASL test suite (ASLTS) by removing |
| unnecessary/verbose text, and emit the actual line number where an error |
| has occurred. These changes are intended to improve the usefulness of the |
| test suite. |
| |
| ---------------------------------------- |
| 29 June 2017. Summary of changes for version 20170629: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Tables: Implemented a deferred ACPI table verification. This is useful |
| for operating systems where the tables cannot be verified in the early |
| initialization stage due to early memory mapping limitations on some |
| architectures. Lv Zheng. |
| |
| Tables: Removed the signature validation for dynamically loaded tables. |
| Provides compatibility with other ACPI implementations. Previously, only |
| SSDT tables were allowed, as per the ACPI specification. Now, any table |
| signature can be used via the Load() operator. Lv Zheng. |
| |
| Tables: Fixed several mutex issues that could cause errors during table |
| acquisition. Lv Zheng. |
| |
| Tables: Fixed a problem where an ACPI warning could be generated if a |
| null pointer was passed to the AcpiPutTable interface. Lv Zheng. |
| |
| Tables: Added a mechanism to handle imbalances for the AcpiGetTable and |
| AcpiPutTable interfaces. This applies to the "late stage" table loading |
| when the use of AcpiPutTable is no longer required (since the system |
| memory manager is fully running and available). Lv Zheng. |
| |
| Fixed/Reverted a regression during processing of resource descriptors |
| that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG |
| exception in this case. |
| |
| Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the |
| I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> |
| |
| Interpreter: Fixed a possible fault if an Alias operator with an invalid |
| or duplicate target is encountered during Alias creation in |
| AcpiExCreateAlias. Alex James <theracermaster@gmail.com> |
| |
| Added an option to use designated initializers for function pointers. |
| Kees Cook <keescook@google.com> |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Allow compilation of External declarations with target pathnames |
| that refer to existing named objects within the table. Erik Schmauss. |
| |
| iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a |
| FieldUnit name also is declared via External in the same table. Erik |
| Schmauss. |
| |
| iASL: Allow existing scope names within pathnames used in External |
| statements. For example: |
| External (ABCD.EFGH) // ABCD exists, but EFGH is truly external |
| Device (ABCD) |
| |
| iASL: IORT ACPI table: Implemented changes required to decode the new |
| Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table |
| compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> |
| |
| Disassembler: Don't abort disassembly on errors from External() |
| statements. Erik Schmauss. |
| |
| Disassembler: fixed a possible fault when one of the Create*Field |
| operators references a Resource Template. ACPICA Bugzilla 1396. |
| |
| iASL: In the source code, resolved some naming inconsistences across the |
| parsing support. Fixes confusion between "Parse Op" and "Parse Node". |
| Adds a new file, aslparseop.c |
| |
| ---------------------------------------- |
| 31 May 2017. Summary of changes for version 20170531: |
| |
| |
| 0) ACPI 6.2 support: |
| |
| The ACPI specification version 6.2 has been released and is available at |
| http://uefi.org/specifications |
| |
| This version of ACPICA fully supports the ACPI 6.2 specification. Changes |
| are summarized below. |
| |
| New ACPI tables (Table Compiler/Disassembler/Templates): |
| HMAT (Heterogeneous Memory Attributes Table) |
| WSMT (Windows SMM Security Mitigation Table) |
| PPTT (Processor Properties Topology Table) |
| |
| New subtables for existing ACPI tables: |
| HEST (New subtable, Arch-deferred machine check) |
| SRAT (New subtable, Arch-specific affinity structure) |
| PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) |
| |
| Simple updates for existing ACPI tables: |
| BGRT (two new flag bits) |
| HEST (New bit defined for several subtables, GHES_ASSIST) |
| |
| New Resource Descriptors and Resource macros (Compiler/Disassembler): |
| PinConfig() |
| PinFunction() |
| PinGroup() |
| PinGroupConfig() |
| PinGroupFunction() |
| New type for hardware error notification (section 18.3.2.9) |
| |
| New predefined names/methods (Compiler/Interpreter): |
| _HMA (Heterogeneous Memory Attributes) |
| _LSI (Label Storage Information) |
| _LSR (Label Storage Read) |
| _LSW (Label Storage Write) |
| |
| ASL grammar/macro changes (Compiler): |
| For() ASL macro, implemented with the AML while operator |
| Extensions to Concatenate operator |
| Support for multiple definition blocks in same ASL file |
| Clarification for Buffer operator |
| Allow executable AML code underneath all scopes (Devices, etc.) |
| Clarification/change for the _OSI return value |
| ASL grammar update for reference operators |
| Allow a zero-length string for AML filename in DefinitionBlock |
| |
| Miscellaneous: |
| New device object notification value |
| Remove a notify value (0x0C) for graceful shutdown |
| New UUIDs for processor/cache properties and |
| physical package property |
| New _HID, ACPI0014 (Wireless Power Calibration Device) |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Added support to disable ACPI events on hardware-reduced platforms. |
| Eliminates error messages of the form "Could not enable fixed event". Lv |
| Zheng |
| |
| Fixed a problem using Device/Thermal objects with the ObjectType and |
| DerefOf ASL operators. This support had not been fully/properly |
| implemented. |
| |
| Fixed a problem where if a Buffer object containing a resource template |
| was longer than the actual resource template, an error was generated -- |
| even though the AML is legal. This case has been seen in the field. |
| |
| Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. |
| The values for DUAL_PIC and MULTIPLE_APIC were reversed. |
| |
| Added header file changes for the TPM2 ACPI table. Update to new version |
| of the TCG specification. Adds a new TPM2 subtable for ARM SMC. |
| |
| Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. |
| These interfaces are intended to be used only in conjunction with the |
| predefined _DLM method (Device Lock Method). "This object appears in a |
| device scope when AML access to the device must be synchronized with the |
| OS environment". |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total |
| Debug Version: 204.0K Code, 84.3K Data, 288.3K Total |
| Previous Release: |
| Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total |
| Debug Version: 207.5K Code, 82.7K Data, 290.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem where an External() declaration could not refer to |
| a Field Unit. Erik Schmauss. |
| |
| Disassembler: Improved support for the Switch/Case operators. This |
| feature will disassemble AML code back to the original Switch operators |
| when possible, instead of an If..Else sequence. David Box |
| |
| iASL and disassembler: Improved the handling of multiple extraneous |
| parentheses for both ASL input and disassembled ASL output. |
| |
| Improved the behavior of the iASL compiler and disassembler to detect |
| improper use of external declarations |
| |
| Disassembler: Now aborts immediately upon detection of an unknown AML |
| opcode. The AML parser has no real way to recover from this, and can |
| result in the creation of an ill-formed parse tree that causes errors |
| later during the disassembly. |
| |
| All tools: Fixed a problem where the Unix application OSL did not handle |
| control-c correctly. For example, a control-c could incorrectly wake the |
| debugger. |
| |
| AcpiExec: Improved the Control-C handling and added a handler for |
| segmentation faults (SIGSEGV). Supports both Windows and Unix-like |
| environments. |
| |
| Reduced the verbosity of the generic unix makefiles. Previously, each |
| compilation displayed the full set of compiler options. This has been |
| eliminated as the options are easily inspected within the makefiles. Each |
| compilation now results in a single line of output. |
| |
| ---------------------------------------- |
| 03 March 2017. Summary of changes for version 20170303: |
| |
| |
| 0) ACPICA licensing: |
| |
| The licensing information at the start of each source code module has |
| been updated. In addition to the Intel license, the dual GPLv2/BSD |
| license has been added for completeness. Now, a single version of the |
| source code should be suitable for all ACPICA customers. This is the |
| major change for this release since it affects all source code modules. |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed two issues with the common asltypes.h header that could cause |
| problems in some environments: (Kim Jung-uk) |
| Removed typedef for YY_BUFFER_STATE ? |
| Fixes an error with earlier versions of Flex. |
| Removed use of FILE typedef (which is only defined in stdio.h) |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: fixed a regression introduced in 20170224. A fix for a |
| memory leak related to resource descriptor tags (names) could fault when |
| the disassembler was generated with 64-bit compilers. |
| |
| The ASLTS test suite has been updated to implement a new testing |
| architecture. During generation of the suite from ASL source, both the |
| ASL and ASL+ compilers are now validated, as well as the disassembler |
| itself (Erik Schmauss). The architecture executes as follows: |
| |
| For every ASL source module: |
| Compile (legacy ASL compilation) |
| Disassemble the resulting AML to ASL+ source code |
| Compile the new ASL+ module |
| Perform a binary compare on the legacy AML and the new ASL+ AML |
| The ASLTS suite then executes normally using the AML binaries. |
| |
| ---------------------------------------- |
| 24 February 2017. Summary of changes for version 20170224: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Interpreter: Fixed two issues with the control method return value auto- |
| repair feature, where an attempt to double-delete an internal object |
| could result in an ACPICA warning (for _CID repair and others). No fault |
| occurs, however, because the attempted deletion (actually a release to an |
| internal cache) is detected and ignored via object poisoning. |
| |
| Debugger: Fixed an AML interpreter mutex issue during the single stepping |
| of control methods. If certain debugger commands are executed during |
| stepping, a mutex acquire/release error could occur. Lv Zheng. |
| |
| Fixed some issues generating ACPICA with the Intel C compiler by |
| restoring the original behavior and compiler-specific include file in |
| acenv.h. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total |
| Debug Version: 207.5K Code, 82.7K Data, 290.2K Total |
| Previous Release: |
| Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total |
| Debug Version: 201.5K Code, 82.2K Data, 283.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion |
| tool has been designed, implemented, and included in this release. The |
| key feature of this utility is that the original comments within the |
| input ASL file are preserved during the conversion process, and included |
| within the converted ASL+ file -- thus creating a transparent conversion |
| of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. |
| |
| Usage: iasl -ca <ASL-filename> // Output is a .dsl file with |
| converted code |
| |
| iASL/Disassembler: Improved the detection and correct disassembly of |
| Switch/Case operators. This feature detects sequences of if/elseif/else |
| operators that originated from ASL Switch/Case/Default operators and |
| emits the original operators. David Box. |
| |
| iASL: Improved the IORT ACPI table support in the following areas. Lv |
| Zheng: |
| Clear MappingOffset if the MappingCount is zero. |
| Fix the disassembly of the SMMU GSU interrupt offset. |
| Update the template file for the IORT table. |
| |
| Disassembler: Enhanced the detection and disassembly of resource |
| template/descriptor within a Buffer object. An EndTag descriptor is now |
| required to have a zero second byte, since all known ASL compilers emit |
| this. This helps eliminate incorrect decisions when a buffer is |
| disassembled (false positives on resource templates). |
| |
| ---------------------------------------- |
| 19 January 2017. Summary of changes for version 20170119: |
| |
| |
| 1) General ACPICA software: |
| |
| Entire source code base: Added the 2017 copyright to all source code |
| legal/licensing module headers and utility/tool signons. This includes |
| the standard Linux dual-license header. This affects virtually every file |
| in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and |
| the ACPICA test suite. |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Removed/fixed an inadvertent remark when a method argument |
| containing a reference is used as a target operand within the method (and |
| never used as a simple argument), as in the example below. Jeffrey Hugo. |
| |
| dsdt.asl 1507: Store(0x1, Arg0) |
| Remark 2146 - ^ Method Argument is never used (Arg0) |
| |
| All tools: Removed the bit width of the compiler that generated the tool |
| from the common signon for all user space tools. This proved to be |
| confusing and unnecessary. This includes similar removal of HARDWARE_NAME |
| from the generic makefiles (Thomas Petazzoni). Example below. |
| |
| Old: |
| ASL+ Optimizing Compiler version 20170119-32 |
| ASL+ Optimizing Compiler version 20170119-64 |
| |
| New: |
| ASL+ Optimizing Compiler version 20170119 |
| |
| ---------------------------------------- |
| 22 December 2016. Summary of changes for version 20161222: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| AML Debugger: Implemented a new mechanism to simplify and enhance |
| debugger integration into all environments, including kernel debuggers |
| and user-space utilities, as well as remote debug services. This |
| mechanism essentially consists of new OSL interfaces to support debugger |
| initialization/termination, as well as wait/notify interfaces to perform |
| the debugger handshake with the host. Lv Zheng. |
| |
| New OSL interfaces: |
| AcpiOsInitializeDebugger (void) |
| AcpiOsTerminateDebugger (void) |
| AcpiOsWaitCommandReady (void) |
| AcpiOsNotifyCommandComplete (void) |
| |
| New OS services layer: |
| osgendbg.c -- Example implementation, and used for AcpiExec |
| |
| Update for Generic Address Space (GAS) support: Although the AccessWidth |
| and/or BitOffset fields of the GAS are not often used, this change now |
| fully supports these fields. This affects the internal support for FADT |
| registers, registers in other ACPI data tables, and the AcpiRead and |
| AcpiWrite public interfaces. Lv Zheng. |
| |
| Sleep support: In order to simplify integration of ACPI sleep for the |
| various host operating systems, a new OSL interface has been introduced. |
| AcpiOsEnterSleep allows the host to perform any required operations |
| before the final write to the sleep control register(s) is performed by |
| ACPICA. Lv Zheng. |
| |
| New OSL interface: |
| AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) |
| |
| Called from these internal interfaces: |
| AcpiHwLegacySleep |
| AcpiHwExtendedSleep |
| |
| EFI support: Added a very small EFI/ACPICA example application. Provides |
| a simple demo for EFI integration, as well as assisting with resolution |
| of issues related to customer ACPICA/EFI integration. Lv Zheng. See: |
| |
| source/tools/efihello/efihello.c |
| |
| Local C library: Implemented several new functions to enhance ACPICA |
| portability, for environments where these clib functions are not |
| available (such as EFI). Lv Zheng: |
| putchar |
| getchar |
| strpbrk |
| strtok |
| memmove |
| |
| Fixed a regression where occasionally a valid resource descriptor was |
| incorrectly detected as invalid at runtime, and a |
| AE_AML_NO_RESOURCE_END_TAG was returned. |
| |
| Fixed a problem with the recently implemented support that enables |
| control method invocations as Target operands to many ASL operators. |
| Warnings of this form: "Needed type [Reference], found [Processor]" were |
| seen at runtime for some method invocations. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total |
| Debug Version: 201.7K Code, 82.7K Data, 284.4K Total |
| Previous Release: |
| Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total |
| Debug Version: 201.3K Code, 82.7K Data, 284.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Enhanced output by adding the capability to detect and |
| disassemble ASL Switch/Case statements back to the original ASL source |
| code instead of if/else blocks. David Box. |
| |
| AcpiHelp: Split a large file into separate files based upon |
| functionality/purpose. New files are: |
| ahaml.c |
| ahasl.c |
| |
| ---------------------------------------- |
| 17 November 2016. Summary of changes for version 20161117: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Table Manager: Fixed a regression introduced in 20160729, "FADT support |
| cleanup". This was an attempt to remove all references in the source to |
| the FADT version 2, which never was a legal version number. It was |
| skipped because it was an early version of 64-bit support that was |
| eventually abandoned for the current 64-bit support. |
| |
| Interpreter: Fixed a problem where runtime implicit conversion was |
| incorrectly disabled for the ASL operators below. This brings the |
| behavior into compliance with the ACPI specification: |
| FromBCD |
| ToBCD |
| ToDecimalString |
| ToHexString |
| ToInteger |
| ToBuffer |
| |
| Table Manager: Added a new public interface, AcpiPutTable, used to |
| release and free an ACPI table returned by AcpiGetTable and related |
| interfaces. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total |
| Debug Version: 201.3K Code, 82.7K Data, 284.0K Total |
| Previous Release: |
| Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total |
| Debug Version: 200.7K Code, 82.1K Data, 282.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a regression for disassembly of Resource Template. |
| Detection of templates in the AML stream missed some types of templates. |
| |
| iASL: Fixed a problem where an Access Size error was returned for the PCC |
| address space when the AccessSize of the GAS register is greater than a |
| DWORD. Hoan Tran. |
| |
| iASL: Implemented several grammar changes for the operators below. These |
| changes are slated for the next version of the ACPI specification: |
| RefOf - Disallow method invocation as an operand |
| CondRefOf - Disallow method invocation as an operand |
| DerefOf - Disallow operands that use the result from operators |
| that |
| do not return a reference (Changed TermArg to |
| SuperName). |
| |
| iASL: Control method invocations are now allowed for Target operands, as |
| per the ACPI specification. Removed error for using a control method |
| invocation as a Target operand. |
| |
| Disassembler: Improved detection of Resource Templates, Unicode, and |
| Strings within Buffer objects. These subtypes do not contain a specific |
| opcode to indicate the originating ASL code, and they must be detected by |
| other means within the disassembler. |
| |
| iASL: Implemented an optimization improvement for 32-bit ACPI tables |
| (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode |
| only after 64-bit to 32-bit truncation. A truncation warning message is |
| still emitted, however. |
| |
| AcpiXtract: Implemented handling for both types of line terminators (LF |
| or CR/LF) so that it can accept AcpiDump output files from any system. |
| Peter Wu. |
| |
| AcpiBin: Added two new options for comparing AML files: |
| -a: compare and display ALL mismatches |
| -o: start compare at this offset into the second file |
| |
| ---------------------------------------- |
| 30 September 2016. Summary of changes for version 20160930: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression in the internal AcpiTbFindTable function where a non |
| AE_OK exception could inadvertently be returned even if the function did |
| not fail. This problem affects the following operators: |
| DataTableRegion |
| LoadTable |
| |
| Fixed a regression in the LoadTable operator where a load to any |
| namespace location other than the root no longer worked properly. |
| |
| Increased the maximum loop count value that will result in the |
| AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to |
| prevent infinite loops within the AML interpreter and thus the host OS |
| kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to |
| 1,048,575). |
| |
| Moved the AcpiGbl_MaxLoopIterations configuration variable to the public |
| acpixf.h file. This allows hosts to easily configure the maximum loop |
| count at runtime. |
| |
| Removed an illegal character in the strtoul64.c file. This character |
| caused errors with some C compilers. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total |
| Debug Version: 200.7K Code, 82.1K Data, 282.8K Total |
| Previous Release: |
| Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total |
| Debug Version: 200.3K Code, 82.1K Data, 282.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a problem with the conversion of Else{If{ blocks into |
| the simpler ASL ElseIf keyword. During the conversion, a trailing If |
| block could be lost and missing from the disassembled output. |
| |
| iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, |
| the missing rule caused a parse error when using the Index operator as an |
| operand to ObjectType. This construct now compiles properly. Example: |
| ObjectType(PKG1[4]). |
| |
| iASL: Correctly handle unresolved symbols in the hardware map file (-lm |
| option). Previously, unresolved symbols could cause a protection fault. |
| Such symbols are now marked as unresolved in the map file. |
| |
| iASL: Implemented support to allow control method invocations as an |
| operand to the ASL DeRefOf operator. Example: |
| DeRefOf(MTH1(Local0)) |
| |
| Disassembler: Improved support for the ToPLD ASL macro. Detection of a |
| possible _PLD buffer now includes examination of both the normal buffer |
| length (16 or 20) as well as the surrounding AML package length. |
| |
| Disassembler: Fixed a problem with the decoding of complex expressions |
| within the Divide operator for ASL+. For the case where both the quotient |
| and remainder targets are specified, the entire statement cannot be |
| disassembled. Previously, the output incorrectly contained a mix of ASL- |
| and ASL+ operators. This mixed statement causes a syntax error when |
| compiled. Example: |
| Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly |
| disassembled to: |
| Divide (INT1 + 6, 128, RSLT, QUOT) |
| |
| iASL/Tools: Added support to process AML and non-AML ACPI tables |
| consistently. For the disassembler and AcpiExec, allow all types of ACPI |
| tables (AML and data tables). For the iASL -e option, allow only AML |
| tables (DSDT/SSDT). |
| |
| ---------------------------------------- |
| 31 August 2016. Summary of changes for version 20160831: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Improve support for the so-called "module-level code", which is defined |
| to be math, logical and control AML opcodes that appear outside of any |
| control method. This change improves the support by adding more opcodes |
| that can be executed in the manner. Some other issues have been solved, |
| and the ASL grammar changes to support such code under all scope |
| operators (Device, etc.) are complete. Lv Zheng. |
| |
| UEFI support: these OSL functions have been implemented. This is an |
| additional step toward supporting the AcpiExec utility natively (with |
| full hardware access) under UEFI. Marcelo Ferreira. |
| AcpiOsReadPciConfiguration |
| AcpiOsWritePciConfiguration |
| |
| Fixed a possible mutex error during control method auto-serialization. Lv |
| Zheng. |
| |
| Updated support for the Generic Address Structure by fully implementing |
| all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv |
| Zheng. |
| |
| Updated the return value for the internal _OSI method. Instead of |
| 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF |
| for 64-bit ACPI tables. This fixes an incompatibility with other ACPI |
| implementations, and will be reflected and clarified in the next version |
| of the ACPI specification. |
| |
| Implemented two new table events that can be passed to an ACPICA table |
| handler. These events are used to indicate a table installation or |
| uninstallation. These events are used in addition to existed table load |
| and unload events. Lv Zheng. |
| |
| Implemented a cleanup for all internal string-to-integer conversions. |
| Consolidate multiple versions of this functionality and limit possible |
| bases to either 10 or 16 to simplify the code. Adds a new file, |
| utstrtoul64. |
| |
| Cleanup the inclusion order of the various compiler-specific headers. |
| This simplifies build configuration management. The compiler-specific |
| headers are now split out from the host-specific headers. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total |
| Debug Version: 200.3K Code, 82.1K Data, 282.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/AcpiExec: Added a command line option to display the build date/time |
| of the tool (-vd). This can be useful to verify that the correct version |
| of the tools are being used. |
| |
| AML Debugger: Implemented a new subcommand ("execute predef") to execute |
| all predefined control methods and names within the current namespace. |
| This can be useful for debugging problems with ACPI tables and the ACPI |
| namespace. |
| |
| ---------------------------------------- |
| 29 July 2016. Summary of changes for version 20160729: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented basic UEFI support for the various ACPICA tools. This |
| includes: |
| 1) An OSL to implement the various AcpiOs* interfaces on UEFI. |
| 2) Support to obtain the ACPI tables on UEFI. |
| 3) Local implementation of required C library functions not available on |
| UEFI. |
| 4) A front-end (main) function for the tools for UEFI-related |
| initialization. |
| |
| The initial deployment of this support is the AcpiDump utility executing |
| as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). |
| Current environments supported are Linux/Unix. MSVC generation is not |
| supported at this time. See the generate/efi/README file for build |
| instructions. Lv Zheng. |
| |
| Future plans include porting the AcpiExec utility to execute natively on |
| the platform with I/O and memory access. This will allow viewing/dump of |
| the platform namespace and native execution of ACPI control methods that |
| access the actual hardware. To fully implement this support, the OSL |
| functions below must be implemented with UEFI interfaces. Any community |
| help in the implementation of these functions would be appreciated: |
| AcpiOsReadPort |
| AcpiOsWritePort |
| AcpiOsReadMemory |
| AcpiOsWriteMemory |
| AcpiOsReadPciConfiguration |
| AcpiOsWritePciConfiguration |
| |
| Restructured and standardized the C library configuration for ACPICA, |
| resulting in the various configuration options below. This includes a |
| global restructuring of the compiler-dependent and platform-dependent |
| include files. These changes may affect the existing platform-dependent |
| configuration files on some hosts. Lv Zheng. |
| |
| The current C library configuration options appear below. For any issues, |
| it may be helpful to examine the existing compiler-dependent and |
| platform-dependent files as examples. Lv Zheng. |
| |
| 1) Linux kernel: |
| ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C |
| library. |
| ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. |
| 2) Unix/Windows/BSD applications: |
| ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C |
| library. |
| ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. |
| 3) UEFI applications: |
| ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C |
| library. |
| ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. |
| 4) UEFI applications (EDK2/StdLib): |
| ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. |
| ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. |
| |
| |
| AML interpreter: "module-level code" support. Allows for execution of so- |
| called "executable" AML code (math/logical operations, etc.) outside of |
| control methods not just at the module level (top level) but also within |
| any scope declared outside of a control method - Scope{}, Device{}, |
| Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. |
| |
| Simplified the configuration of the "maximum AML loops" global option by |
| adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be |
| modified at runtime. |
| |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total |
| Debug Version: 199.0K Code, 81.8K Data, 280.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Add full support for the RASF ACPI table (RAS Features Table). |
| Includes disassembler, data table compiler, and header support. |
| |
| iASL Expand "module-level code" support. Allows for |
| compilation/disassembly of so-called "executable" AML code (math/logical |
| operations, etc.) outside of control methods not just at the module level |
| (top level) but also within any scope declared outside of a control |
| method - Scope{}, Device{}, Processor{}, PowerResource{}, and |
| ThermalZone{}. |
| |
| AcpiDump: Added support for dumping all SSDTs on newer versions of |
| Windows. These tables are now easily available -- SSDTs are not available |
| through the registry on older versions. |
| |
| ---------------------------------------- |
| 27 May 2016. Summary of changes for version 20160527: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Temporarily reverted the new arbitrary bit length/alignment support in |
| AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been |
| a number of regressions with the new code that need to be fully resolved |
| and tested before this support can be finally integrated into ACPICA. |
| Apologies for any inconveniences these issues may have caused. |
| |
| The ACPI message macros are not configurable (ACPI_MSG_ERROR, |
| ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, |
| and ACPI_MSG_BIOS_WARNING). Lv Zheng. |
| |
| Fixed a couple of GCC warnings associated with the use of the -Wcast-qual |
| option. Adds a new return macro, return_STR. Junk-uk Kim. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total |
| Debug Version: 201.5K Code, 82.2K Data, 283.7K Total |
| Previous Release: |
| Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total |
| Debug Version: 200.9K Code, 82.2K Data, 283.1K Total |
| |
| ---------------------------------------- |
| 22 April 2016. Summary of changes for version 20160422: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression in the GAS (generic address structure) arbitrary bit |
| support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior |
| and incorrect return values. Lv Zheng. ACPICA BZ 1270. |
| |
| ACPI 6.0: Added support for new/renamed resource macros. One new argument |
| was added to each of these macros, and the original name has been |
| deprecated. The AML disassembler will always disassemble to the new |
| names. Support for the new macros was added to iASL, disassembler, |
| resource manager, and the acpihelp utility. ACPICA BZ 1274. |
| |
| I2cSerialBus -> I2cSerialBusV2 |
| SpiSerialBus -> SpiSerialBusV2 |
| UartSerialBus -> UartSerialBusV2 |
| |
| ACPI 6.0: Added support for a new integer field that was appended to the |
| package object returned by the _BIX method. This adds iASL compile-time |
| and AML runtime error checking. ACPICA BZ 1273. |
| |
| ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm |
| Subspace Type2" (Headers, Disassembler, and data table compiler). |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total |
| Debug Version: 201.5K Code, 82.2K Data, 283.7K Total |
| Previous Release: |
| Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total |
| Debug Version: 201.0K Code, 82.0K Data, 283.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented an ASL grammar extension to allow/enable executable |
| "module-level code" to be created and executed under the various |
| operators that create new scopes. This type of AML code is already |
| supported in all known AML interpreters, and the grammar change will |
| appear in the next version of the ACPI specification. Simplifies the |
| conditional runtime creation of named objects under these object types: |
| |
| Device |
| PowerResource |
| Processor |
| Scope |
| ThermalZone |
| |
| iASL: Implemented a new ASL extension, a "For" loop macro to add greater |
| ease-of-use to the ASL language. The syntax is similar to the |
| corresponding C operator, and is implemented with the existing AML While |
| opcode -- thus requiring no changes to existing AML interpreters. |
| |
| For (Initialize, Predicate, Update) {TermList} |
| |
| Grammar: |
| ForTerm := |
| For ( |
| Initializer // Nothing | TermArg => ComputationalData |
| Predicate // Nothing | TermArg => ComputationalData |
| Update // Nothing | TermArg => ComputationalData |
| ) {TermList} |
| |
| |
| iASL: The _HID/_ADR detection and validation has been enhanced to search |
| under conditionals in order to allow these objects to be conditionally |
| created at runtime. |
| |
| iASL: Fixed several issues with the constant folding feature. The |
| improvement allows better detection and resolution of statements that can |
| be folded at compile time. ACPICA BZ 1266. |
| |
| iASL/Disassembler: Fixed a couple issues with the Else{If{}...} |
| conversion to the ASL ElseIf operator where incorrect ASL code could be |
| generated. |
| |
| iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where |
| sometimes an extra (and extraneous) set of parentheses were emitted for |
| some combinations of operators. Although this did not cause any problems |
| with recompilation of the disassembled code, it made the code more |
| difficult to read. David Box. ACPICA BZ 1231. |
| |
| iASL: Changed to ignore the unreferenced detection for predefined names |
| of resource descriptor elements, when the resource descriptor is |
| created/defined within a control method. |
| |
| iASL: Disassembler: Fix a possible fault with externally declared Buffer |
| objects. |
| |
| ---------------------------------------- |
| 18 March 2016. Summary of changes for version 20160318: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Added support for arbitrary bit lengths and bit offsets for registers |
| defined by the Generic Address Structure. Previously, only aligned bit |
| lengths of 8/16/32/64 were supported. This was sufficient for many years, |
| but recently some machines have been seen that require arbitrary bit- |
| level support. ACPICA BZ 1240. Lv Zheng. |
| |
| Fixed an issue where the \_SB._INI method sometimes must be evaluated |
| before any _REG methods are evaluated. Lv Zheng. |
| |
| Implemented several changes related to ACPI table support |
| (Headers/Disassembler/TableCompiler): |
| NFIT: For ACPI 6.1, updated to add some additional new fields and |
| constants. |
| FADT: Updated a warning message and set compliance to ACPI 6.1 (Version |
| 6). |
| DMAR: Added new constants per the 10/2014 DMAR spec. |
| IORT: Added new subtable per the 10/2015 IORT spec. |
| HEST: For ACPI 6.1, added new constants and new subtable. |
| DBG2: Added new constants per the 12/2015 DBG2 spec. |
| FPDT: Fixed several incorrect fields, add the FPDT boot record structure. |
| ACPICA BZ 1249. |
| ERST/EINJ: Updated disassembler with new "Execute Timings" actions. |
| |
| Updated header support for the DMAR table to match the current version of |
| the related spec. |
| |
| Added extensions to the ASL Concatenate operator to allow any ACPI object |
| to be passed as an operand. Any object other than Integer/String/Buffer |
| simply returns a string containing the object type. This extends the |
| usefulness of the Printf macros. Previously, Concatenate would abort the |
| control method if a non-data object was encountered. |
| |
| ACPICA source code: Deployed the C "const" keyword across the source code |
| where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total |
| Debug Version: 201.0K Code, 82.0K Data, 283.0K Total |
| Previous Release: |
| Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total |
| Debug Version: 200.4K Code, 82.0K Data, 282.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: Improved the heuristic used to determine the number of |
| arguments for an externally defined control method (a method in another |
| table). Although this is an improvement, there is no deterministic way to |
| "guess" the number of method arguments. Only the ACPI 6.0 External opcode |
| will completely solve this problem as it is deployed (automatically) in |
| newer BIOS code. |
| |
| iASL/Disassembler: Fixed an ordering issue for emitted External() ASL |
| statements that could cause errors when the disassembled file is |
| compiled. ACPICA BZ 1243. David Box. |
| |
| iASL: Fixed a regression caused by the merger of the two versions of the |
| local strtoul64. Because of a dependency on a global variable, strtoul64 |
| could return an error for integers greater than a 32-bit value. ACPICA BZ |
| 1260. |
| |
| iASL: Fixed a regression where a fault could occur for an ASL Return |
| statement if it invokes a control method that is not resolved. ACPICA BZ |
| 1264. |
| |
| AcpiXtract: Improved input file validation: detection of binary files and |
| non-acpidump text files. |
| |
| ---------------------------------------- |
| 12 February 2016. Summary of changes for version 20160212: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented full support for the ACPI 6.1 specification (released in |
| January). This version of the specification is available at: |
| http://www.uefi.org/specifications |
| |
| Only a relatively small number of changes were required in ACPICA to |
| support ACPI 6.1, in these areas: |
| - New predefined names |
| - New _HID values |
| - A new subtable for HEST |
| - A few other header changes for new values |
| |
| Ensure \_SB_._INI is executed before any _REG methods are executed. There |
| appears to be existing BIOS code that relies on this behavior. Lv Zheng. |
| |
| Reverted a change made in version 20151218 which enabled method |
| invocations to be targets of various ASL operators (SuperName and Target |
| grammar elements). While the new behavior is supported by the ACPI |
| specification, other AML interpreters do not support this behavior and |
| never will. The ACPI specification will be updated for ACPI 6.2 to remove |
| this support. Therefore, the change was reverted to the original ACPICA |
| behavior. |
| |
| ACPICA now supports the GCC 6 compiler. |
| |
| Current Release: (Note: build changes increased sizes) |
| Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total |
| Debug Version: 200.4K Code, 82.0K Data, 282.4K Total |
| Previous Release: |
| Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total |
| Debug Version: 200.4K Code, 81.9K Data, 282.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Completed full support for the ACPI 6.0 External() AML opcode. The |
| compiler emits an external AML opcode for each ASL External statement. |
| This opcode is used by the disassembler to assist with the disassembly of |
| external control methods by specifying the required number of arguments |
| for the method. AML interpreters do not use this opcode. To ensure that |
| interpreters do not even see the opcode, a block of one or more external |
| opcodes is surrounded by an "If(0)" construct. As this feature becomes |
| commonly deployed in BIOS code, the ability of disassemblers to correctly |
| disassemble AML code will be greatly improved. David Box. |
| |
| iASL: Implemented support for an optional cross-reference output file. |
| The -lx option will create a the cross-reference file with the suffix |
| "xrf". Three different types of cross-reference are created in this file: |
| - List of object references made from within each control method |
| - Invocation (caller) list for each user-defined control method |
| - List of references to each non-method object in the namespace |
| |
| iASL: Method invocations as ASL Target operands are now disallowed and |
| flagged as errors in preparation for ACPI 6.2 (see the description of the |
| problem above). |
| |
| ---------------------------------------- |
| 8 January 2016. Summary of changes for version 20160108: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all ACPICA copyrights and signons to 2016: Added the 2016 |
| copyright to all source code module headers and utility/tool signons. |
| This includes the standard Linux dual-license header. This affects |
| virtually every file in the ACPICA core subsystem, iASL compiler, all |
| ACPICA utilities, and the ACPICA test suite. |
| |
| Fixed a regression introduced in version 20151218 concerning the |
| execution of so-called module-level ASL/AML code. Namespace objects |
| created under a module-level If() construct were not properly/fully |
| entered into the namespace and could cause an interpreter fault when |
| accessed. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total |
| Debug Version: 200.4K Code, 81.9K Data, 282.4K Total |
| Previous Release: |
| Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total |
| Debug Version: 200.3K Code, 81.9K Data, 282.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a problem with the compilation of the GpioIo and GpioInt resource |
| descriptors. The _PIN field name was incorrectly defined to be an array |
| of 32-bit values, but the _PIN values are in fact 16 bits each. This |
| would cause incorrect bit width warnings when using Word (16-bit) fields |
| to access the descriptors. |
| |
| |
| ---------------------------------------- |
| 18 December 2015. Summary of changes for version 20151218: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented per-AML-table execution of "module-level code" as individual |
| ACPI tables are loaded into the namespace during ACPICA initialization. |
| In other words, any module-level code within an AML table is executed |
| immediately after the table is loaded, instead of batched and executed |
| after all of the tables have been loaded. This provides compatibility |
| with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, |
| David Box. |
| |
| To fully support the feature above, the default operation region handlers |
| for the SystemMemory, SystemIO, and PCI_Config address spaces are now |
| installed before any ACPI tables are loaded. This enables module-level |
| code to access these address spaces during the table load and module- |
| level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David |
| Box. |
| |
| Implemented several changes to the internal _REG support in conjunction |
| with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples |
| utilities for the changes above. Although these tools were changed, host |
| operating systems that simply use the default handlers for SystemMemory, |
| SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. |
| |
| For example, in the code below, DEV1 is conditionally added to the |
| namespace by the DSDT via module-level code that accesses an operation |
| region. The SSDT references DEV1 via the Scope operator. DEV1 must be |
| created immediately after the DSDT is loaded in order for the SSDT to |
| successfully reference DEV1. Previously, this code would cause an |
| AE_NOT_EXIST exception during the load of the SSDT. Now, this code is |
| fully supported by ACPICA. |
| |
| DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) |
| { |
| OperationRegion (OPR1, SystemMemory, 0x400, 32) |
| Field (OPR1, AnyAcc, NoLock, Preserve) |
| { |
| FLD1, 1 |
| } |
| If (FLD1) |
| { |
| Device (\DEV1) |
| { |
| } |
| } |
| } |
| DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) |
| { |
| External (\DEV1, DeviceObj) |
| Scope (\DEV1) |
| { |
| } |
| } |
| |
| Fixed an AML interpreter problem where control method invocations were |
| not handled correctly when the invocation was itself a SuperName argument |
| to another ASL operator. In these cases, the method was not invoked. |
| ACPICA BZ 1002. Affects the following ASL operators that have a SuperName |
| argument: |
| Store |
| Acquire, Wait |
| CondRefOf, RefOf |
| Decrement, Increment |
| Load, Unload |
| Notify |
| Signal, Release, Reset |
| SizeOf |
| |
| Implemented automatic String-to-ObjectReference conversion support for |
| packages returned by predefined names (such as _DEP). A common BIOS error |
| is to add double quotes around an ObjectReference namepath, which turns |
| the reference into an unexpected string object. This support detects the |
| problem and corrects it before the package is returned to the caller that |
| invoked the method. Lv Zheng. |
| |
| Implemented extensions to the Concatenate operator. Concatenate now |
| accepts any type of object, it is not restricted to simply |
| Integer/String/Buffer. For objects other than these 3 basic data types, |
| the argument is treated as a string containing the name of the object |
| type. This expands the utility of Concatenate and the Printf/Fprintf |
| macros. ACPICA BZ 1222. |
| |
| Cleaned up the output of the ASL Debug object. The timer() value is now |
| optional and no longer emitted by default. Also, the basic data types of |
| Integer/String/Buffer are simply emitted as their values, without a data |
| type string -- since the data type is obvious from the output. ACPICA BZ |
| 1221. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total |
| Debug Version: 200.3K Code, 81.9K Data, 282.3K Total |
| Previous Release: |
| Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total |
| Debug Version: 199.6K Code, 81.8K Data, 281.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed some issues with the ASL Include() operator. This operator |
| was incorrectly defined in the iASL parser rules, causing a new scope to |
| be opened for the code within the include file. This could lead to |
| several issues, including allowing ASL code that is technically illegal |
| and not supported by AML interpreters. Note, this does not affect the |
| related #include preprocessor operator. ACPICA BZ 1212. |
| |
| iASL/Disassembler: Implemented support for the ASL ElseIf operator. This |
| operator is essentially an ASL macro since there is no AML opcode |
| associated with it. The code emitted by the iASL compiler for ElseIf is |
| an Else opcode followed immediately by an If opcode. The disassembler |
| will now emit an ElseIf if it finds an Else immediately followed by an |
| If. This simplifies the decoded ASL, especially for deeply nested |
| If..Else and large Switch constructs. Thus, the disassembled code more |
| closely follows the original source ASL. ACPICA BZ 1211. Example: |
| |
| Old disassembly: |
| Else |
| { |
| If (Arg0 == 0x02) |
| { |
| Local0 = 0x05 |
| } |
| } |
| |
| New disassembly: |
| ElseIf (Arg0 == 0x02) |
| { |
| Local0 = 0x05 |
| } |
| |
| AcpiExec: Added support for the new module level code behavior and the |
| early region installation. This required a small change to the |
| initialization, since AcpiExec must install its own operation region |
| handlers. |
| |
| AcpiExec: Added support to make the debug object timer optional. Default |
| is timer disabled. This cleans up the debug object output -- the timer |
| data is rarely used. |
| |
| AcpiExec: Multiple ACPI tables are now loaded in the order that they |
| appear on the command line. This can be important when there are |
| interdependencies/references between the tables. |
| |
| iASL/Templates. Add support to generate template files with multiple |
| SSDTs within a single output file. Also added ommand line support to |
| specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ |
| 1223, 1225. |
| |
| |
| ---------------------------------------- |
| 24 November 2015. Summary of changes for version 20151124: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a possible regression for a previous update to FADT handling. The |
| FADT no longer has a fixed table ID, causing some issues with code that |
| was hardwired to a specific ID. Lv Zheng. |
| |
| Fixed a problem where the method auto-serialization could interfere with |
| the current SyncLevel. This change makes the auto-serialization support |
| transparent to the SyncLevel support and management. |
| |
| Removed support for the _SUB predefined name in AcpiGetObjectInfo. This |
| interface is intended for early access to the namespace during the |
| initial namespace device discovery walk. The _SUB method has been seen to |
| access operation regions in some cases, causing errors because the |
| operation regions are not fully initialized. |
| |
| AML Debugger: Fixed some issues with the terminate/quit/exit commands |
| that can cause faults. Lv Zheng. |
| |
| AML Debugger: Add thread ID support so that single-step mode only applies |
| to the AML Debugger thread. This prevents runtime errors within some |
| kernels. Lv Zheng. |
| |
| Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx |
| methods that are invoked by this interface are optional, removed warnings |
| emitted for the case where one or more of these methods do not exist. |
| ACPICA BZ 1208, original change by Prarit Bhargava. |
| |
| Made a major pass through the entire ACPICA source code base to |
| standardize formatting that has diverged a bit over time. There are no |
| functional changes, but this will of course cause quite a few code |
| differences from the previous ACPICA release. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total |
| Debug Version: 199.6K Code, 81.8K Data, 281.4K Total |
| Previous Release: |
| Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total |
| Debug Version: 199.3K Code, 81.4K Data, 280.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple |
| definition blocks within a single ASL file and the resulting AML file. |
| Support for this type of file was also added to the various tools that |
| use binary AML files: acpiexec, acpixtract, and the AML disassembler. The |
| example code below shows two definition blocks within the same file: |
| |
| DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", |
| 0x12345678) |
| { |
| } |
| DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) |
| { |
| } |
| |
| iASL: Enhanced typechecking for the Name() operator. All expressions for |
| the value of the named object must be reduced/folded to a single constant |
| at compile time, as per the ACPI specification (the AML definition of |
| Name()). |
| |
| iASL: Fixed some code indentation issues for the -ic and -ia options (C |
| and assembly headers). Now all emitted code correctly begins in column 1. |
| |
| iASL: Added an error message for an attempt to open a Scope() on an |
| object defined in an SSDT. The DSDT is always loaded into the namespace |
| first, so any attempt to open a Scope on an SSDT object will fail at |
| runtime. |
| |
| |
| ---------------------------------------- |
| 30 September 2015. Summary of changes for version 20150930: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Debugger: Implemented several changes and bug fixes to assist support for |
| the in-kernel version of the AML debugger. Lv Zheng. |
| - Fix the "predefined" command for in-kernel debugger. |
| - Do not enter debug command loop for the help and version commands. |
| - Disallow "execute" command during execution/single-step of a method. |
| |
| Interpreter: Updated runtime typechecking for all operators that have |
| target operands. The operand is resolved and validated that it is legal. |
| For example, the target cannot be a non-data object such as a Device, |
| Mutex, ThermalZone, etc., as per the ACPI specification. |
| |
| Debugger: Fixed the double-mutex user I/O handshake to work when local |
| deadlock detection is enabled. |
| |
| Debugger: limited display of method locals and arguments (LocalX and |
| ArgX) to only those that have actually been initialized. This prevents |
| lines of extraneous output. |
| |
| Updated the definition of the NFIT table to correct the bit polarity of |
| one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total |
| Debug Version: 199.3K Code, 81.4K Data, 280.7K Total |
| Previous Release: |
| Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total |
| Debug Version: 198.6K Code, 80.9K Data, 279.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Improved the compile-time typechecking for operands of many of the |
| ASL operators: |
| |
| -- Added an option to disable compiler operand/operator typechecking (- |
| ot). |
| |
| -- For the following operators, the TermArg operands are now validated |
| when possible to be Integer data objects: BankField, OperationRegion, |
| DataTableRegion, Buffer, and Package. |
| |
| -- Store (Source, Target): Both the source and target operands are |
| resolved and checked that the operands are both legal. For example, |
| neither operand can be a non-data object such as a Device, Mutex, |
| ThermalZone, etc. Note, as per the ACPI specification, the CopyObject |
| operator can be used to store an object to any type of target object. |
| |
| -- Store (Source, Target): If the source is a Package object, the target |
| must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target |
| is a Package, the source must also be a Package. |
| |
| -- Store (Source, Target): A warning is issued if the source and target |
| resolve to the identical named object. |
| |
| -- Store (Source, <method invocation>): An error is generated for the |
| target method invocation, as this construct is not supported by the AML |
| interpreter. |
| |
| -- For all ASL math and logic operators, the target operand must be a |
| data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This |
| includes the function return value also. |
| |
| -- External declarations are also included in the typechecking where |
| possible. External objects defined using the UnknownObj keyword cannot be |
| typechecked, however. |
| |
| iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index |
| operator: |
| - Legacy code: Index(PKG1, 3) |
| - New ASL+ code: PKG1[3] |
| This completes the ACPI 6.0 ASL+ support as it was the only operator not |
| supported. |
| |
| iASL: Fixed the file suffix for the preprocessor output file (.i). Two |
| spaces were inadvertently appended to the filename, causing file access |
| and deletion problems on some systems. |
| |
| ASL Test Suite (ASLTS): Updated the master makefile to generate all |
| possible compiler output files when building the test suite -- thus |
| exercising these features of the compiler. These files are automatically |
| deleted when the test suite exits. |
| |
| |
| ---------------------------------------- |
| 18 August 2015. Summary of changes for version 20150818: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv |
| Zheng. ACPICA BZ 1186. |
| |
| Completed development to ensure that the ACPICA Disassembler and Debugger |
| are fully standalone components of ACPICA. Removed cross-component |
| dependences. Lv Zheng. |
| |
| The max-number-of-AML-loops is now runtime configurable (previously was |
| compile-time only). This is essentially a loop timeout to force-abort |
| infinite AML loops. ACPCIA BZ 1192. |
| |
| Debugger: Cleanup output to dump ACPI names and namepaths without any |
| trailing underscores. Lv Zheng. ACPICA BZ 1135. |
| |
| Removed unnecessary conditional compilations across the Debugger and |
| Disassembler components where entire modules could be left uncompiled. |
| |
| The aapits test is deprecated and has been removed from the ACPICA git |
| tree. The test has never been completed and has not been maintained, thus |
| becoming rather useless. ACPICA BZ 1015, 794. |
| |
| A batch of small changes to close bugzilla and other reports: |
| - Remove duplicate code for _PLD processing. ACPICA BZ 1176. |
| - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. |
| - iASL: Support POSIX yacc again in makefile. Jung-uk Kim. |
| - ACPI table support: general cleanup and simplification. Lv Zheng, Bob |
| Moore. |
| - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. |
| ACPICA BZ 1184. |
| - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML |
| operators. |
| - Debugger: Split debugger initialization/termination interfaces. Lv |
| Zheng. |
| - AcpiExec: Emit OemTableId for SSDTs during the load phase for table |
| identification. |
| - AcpiExec: Add debug message during _REG method phase during table |
| load/init. |
| - AcpiNames: Fix a regression where some output was missing and no longer |
| emitted. |
| - Debugger: General cleanup and simplification. Lv Zheng. |
| - Disassembler: Cleanup use of several global option variables. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total |
| Debug Version: 198.6K Code, 80.9K Data, 279.5K Total |
| Previous Release: |
| Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total |
| Debug Version: 197.8K Code, 81.5K Data, 279.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT |
| were not handled properly and caused load errors. Now, properly invoke |
| and use the ACPICA auto-reallocate mechanism for ACPI table data |
| structures. ACPICA BZ 1188 |
| |
| AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA |
| BZ 1190. |
| |
| AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For |
| AcpiExec, this means that no control methods (like _REG/_INI/_STA) are |
| executed during initialization. ACPICA BZ 1187, 1189. |
| |
| iASL/Disassembler: Implemented a prototype "listing" mode that emits AML |
| that corresponds to each disassembled ASL statement, to simplify |
| debugging. ACPICA BZ 1191. |
| |
| Debugger: Add option to the "objects" command to display a summary of the |
| current namespace objects (Object type and count). This is displayed if |
| the command is entered with no arguments. |
| |
| AcpiNames: Add -x option to specify debug level, similar to AcpiExec. |
| |
| |
| ---------------------------------------- |
| 17 July 2015. Summary of changes for version 20150717: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Improved the partitioning between the Debugger and Disassembler |
| components. This allows the Debugger to be used standalone within kernel |
| code without the Disassembler (which is used for single stepping also). |
| This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. |
| |
| Debugger: Implemented a new command to trace the execution of control |
| methods (Trace). This is especially useful for the in-kernel version of |
| the debugger when file I/O may not be available for method trace output. |
| See the ACPICA reference for more information. Lv Zheng. |
| |
| Moved all C library prototypes (used for the local versions of these |
| functions when requested) to a new header, acclib.h |
| Cleaned up the use of non-ANSI C library functions. These functions are |
| implemented locally in ACPICA. Moved all such functions to a common |
| source file, utnonansi.c |
| |
| Debugger: Fixed a problem with the "!!" command (get last command |
| executed) where the debugger could enter an infinite loop and eventually |
| crash. |
| |
| Removed the use of local macros that were used for some of the standard C |
| library functions to automatically cast input parameters. This mostly |
| affected the is* functions where the input parameter is defined to be an |
| int. This required a few modifications to the main ACPICA source code to |
| provide casting for these functions and eliminate possible compiler |
| warnings for these parameters. |
| |
| Across the source code, added additional status/error checking to resolve |
| issues discovered by static source code analysis tools such as Coverity. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total |
| Debug Version: 197.8K Code, 81.5K Data, 279.3K Total |
| Previous Release: |
| Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total |
| Debug Version: 196.2K Code, 81.0K Data, 277.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a regression where the device map file feature no longer |
| worked properly when used in conjunction with the disassembler. It only |
| worked properly with the compiler itself. |
| |
| iASL: Implemented a new warning for method LocalX variables that are set |
| but never used (similar to a C compiler such as gcc). This also applies |
| to ArgX variables that are not defined by the parent method, and are |
| instead (legally) used as local variables. |
| |
| iASL/Preprocessor: Finished the pass-through of line numbers from the |
| preprocessor to the compiler. This ensures that compiler errors/warnings |
| have the correct original line numbers and filenames, regardless of any |
| #include files. |
| |
| iASL/Preprocessor: Fixed a couple of issues with comment handling and the |
| pass-through of comments to the preprocessor output file (which becomes |
| the compiler input file). Also fixed a problem with // comments that |
| appear after a math expression. |
| |
| iASL: Added support for the TCPA server table to the table compiler and |
| template generator. (The client table was already previously supported) |
| |
| iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to |
| identify the iASL compiler. |
| |
| Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined |
| multiple times. The new names are ACPI_SIGN_NEGATIVE and |
| ACPI_SIGN_POSITIVE. |
| |
| AcpiHelp: Update to expand help messages for the iASL preprocessor |
| directives. |
| |
| |
| ---------------------------------------- |
| 19 June 2015. Summary of changes for version 20150619: |
| |
| Two regressions in version 20150616 have been addressed: |
| |
| Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, |
| etc.) This update changes ACPICA to only use the standard headers for |
| functions, or the prototypes for the local versions of the C library |
| functions. Across the source code, this required some additional casts |
| for some Clib invocations for portability. Moved all local prototypes to |
| a new file, acclib.h |
| |
| Fixes several problems with recent changes to the handling of the FACS |
| table that could cause some systems not to boot. |
| |
| |
| ---------------------------------------- |
| 16 June 2015. Summary of changes for version 20150616: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Across the entire ACPICA source code base, the various macros for the C |
| library functions (such as ACPI_STRLEN, etc.) have been removed and |
| replaced by the standard C library names (strlen, etc.) The original |
| purpose for these macros is no longer applicable. This simplification |
| reduces the number of macros used in the ACPICA source code |
| significantly, improving readability and maintainability. |
| |
| Implemented support for a new ACPI table, the OSDT. This table, the |
| "override" SDT, can be loaded directly by the host OS at boot time. It |
| enables the replacement of existing namespace objects that were installed |
| via the DSDT and/or SSDTs. The primary purpose for this is to replace |
| buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated |
| for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob |
| Moore. |
| |
| Added support for systems with (improperly) two FACS tables -- a "32-bit" |
| table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit |
| X field). This change will support both automatically. There continues to |
| be systems found with this issue. This support requires a change to the |
| AcpiSetFirmwareWakingVector interface. Also, a public global variable has |
| been added to allow the host to select which FACS is desired |
| (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more |
| details Lv Zheng. |
| |
| Added a new feature to allow for systems that do not contain an FACS. |
| Although this is already supported on hardware-reduced platforms, the |
| feature has been extended for all platforms. The reasoning is that we do |
| not want to abort the entire ACPICA initialization just because the |
| system is seriously buggy and has no FACS. |
| |
| Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were |
| not correctly transcribed from the ACPI specification in ACPICA version |
| 20150515. |
| |
| Implemented support for the _CLS object in the AcpiGetObjectInfo external |
| interface. |
| |
| Updated the definitions of the TCPA and TPM2 ACPI tables to the more |
| recent TCG ACPI Specification, December 14, 2014. Table disassembler and |
| compiler also updated. Note: The TCPA "server" table is not supported by |
| the disassembler/table-compiler at this time. |
| |
| ACPI 6.0: Added definitions for the new GIC version field in the MADT. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total |
| Debug Version: 196.2K Code, 81.0K Data, 277.2K Total |
| Previous Release: |
| Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total |
| Debug Version: 195.2K Code, 80.8K Data, 276.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a problem with the new symbolic operator disassembler |
| where incorrect ASL code could be emitted in some cases for the "non- |
| commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and |
| ShiftRight. The actual problem cases seem to be rather unusual in common |
| ASL code, however. David Box. |
| |
| Modified the linux version of acpidump to obtain ACPI tables from not |
| just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv |
| Zheng. |
| |
| iASL: Fixed a problem where the user preprocessor output file (.i) |
| contained extra data that was not expected. The compiler was using this |
| file as a temporary file and passed through #line directives in order to |
| keep compiler error messages in sync with the input file and line number |
| across multiple include files. The (.i) is no longer a temporary file as |
| the compiler uses a new, different file for the original purpose. |
| |
| iASL: Fixed a problem where comments within the original ASL source code |
| file were not passed through to the preprocessor output file, nor any |
| listing files. |
| |
| iASL: Fixed some issues for the handling of the "#include" preprocessor |
| directive and the similar (but not the same) "Include" ASL operator. |
| |
| iASL: Add support for the new OSDT in both the disassembler and compiler. |
| |
| iASL: Fixed a problem with the constant folding support where a Buffer |
| object could be incorrectly generated (incorrectly formed) during a |
| conversion to a Store() operator. |
| |
| AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new |
| description text for the _REV predefined name. _REV now permanently |
| returns 2, as per the ACPI 6.0 specification. |
| |
| Debugger: Enhanced the output of the Debug ASL object for references |
| produced by the Index operator. For Buffers and strings, only output the |
| actual byte pointed to by the index. For packages, only print the single |
| package element decoded by the index. Previously, the entire |
| buffer/string/package was emitted. |
| |
| iASL/Table-compiler: Fixed a regression where the "generic" data types |
| were no longer recognized, causing errors. |
| |
| |
| ---------------------------------------- |
| 15 May 2015. Summary of changes for version 20150515: |
| |
| This release implements most of ACPI 6.0 as described below. |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented runtime argument checking and return value checking for all |
| new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, |
| _MTL, _PRR, _RDI, _RST, _TFP, _TSN. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total |
| Debug Version: 195.2K Code, 80.8K Data, 276.0K Total |
| Previous Release: |
| Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total |
| Debug Version: 192.8K Code, 79.9K Data, 272.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL compiler: Added compile-time support for all new ACPI 6.0 predefined |
| names (argument count validation and return value typechecking.) |
| |
| iASL disassembler and table compiler: implemented support for all new |
| ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. |
| |
| iASL disassembler and table compiler: Added ACPI 6.0 changes to existing |
| tables: FADT, MADT. |
| |
| iASL preprocessor: Added a new directive to enable inclusion of binary |
| blobs into ASL code. The new directive is #includebuffer. It takes a |
| binary file as input and emits a named ascii buffer object into the ASL |
| code. |
| |
| AcpiHelp: Added support for all new ACPI 6.0 predefined names. |
| |
| AcpiHelp: Added a new option, -d, to display all iASL preprocessor |
| directives. |
| |
| AcpiHelp: Added a new option, -t, to display all known/supported ACPI |
| tables. |
| |
| |
| ---------------------------------------- |
| 10 April 2015. Summary of changes for version 20150410: |
| |
| Reverted a change introduced in version 20150408 that caused |
| a regression in the disassembler where incorrect operator |
| symbols could be emitted. |
| |
| |
| ---------------------------------------- |
| 08 April 2015. Summary of changes for version 20150408: |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Permanently set the return value for the _REV predefined name. It now |
| returns 2 (was 5). This matches other ACPI implementations. _REV will be |
| deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 |
| for ACPI 2.0 and later. It should never be used to differentiate or |
| identify operating systems. |
| |
| Added the "Windows 2015" string to the _OSI support. ACPICA will now |
| return TRUE to a query with this string. |
| |
| Fixed several issues with the local version of the printf function. |
| |
| Added the C99 compiler option (-std=c99) to the Unix makefiles. |
| |
| Current Release: |
| Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total |
| Debug Version: 195.2K Code, 80.7K Data, 275.9K Total |
| Previous Release: |
| Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total |
| Debug Version: 192.1K Code, 79.8K Data, 271.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented an enhancement to the constant folding feature to |
| transform the parse tree to a simple Store operation whenever possible: |
| Add (2, 3, X) ==> is converted to: Store (5, X) |
| X = 2 + 3 ==> is converted to: Store (5, X) |
| |
| Updated support for the SLIC table (Software Licensing Description Table) |
| in both the Data Table compiler and the disassembler. The SLIC table |
| support now conforms to "Microsoft Software Licensing Tables (SLIC and |
| MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data |
| following the ACPI header is now defined to be "Proprietary Data", and as |
| such, can only be entered or displayed as a hex data block. |
| |
| Implemented full support for the MSDM table as described in the document |
| above. Note: The format of MSDM is similar to SLIC. Any MSDM data |
| following the ACPI header is defined to be "Proprietary Data", and can |
| only be entered or displayed as a hex data block. |
| |
| Implemented the -Pn option for the iASL Table Compiler (was only |
| implemented for the ASL compiler). This option disables the iASL |
| preprocessor. |
| |
| Disassembler: For disassembly of Data Tables, added a comment field |
| around the Ascii equivalent data that is emitted as part of the "Raw |
| Table Data" block. This prevents the iASL Preprocessor from possible |
| confusion if/when the table is compiled. |
| |
| Disassembler: Added an option (-df) to force the disassembler to assume |
| that the table being disassembled contains valid AML. This feature is |
| useful for disassembling AML files that contain ACPI signatures other |
| than DSDT or SSDT (such as OEMx or other signatures). |
| |
| Changes for the EFI version of the tools: |
| 1) Fixed a build error/issue |
| 2) Fixed a cast warning |
| |
| iASL: Fixed a path issue with the __FILE__ operator by making the |
| directory prefix optional within the internal SplitInputFilename |
| function. |
| |
| Debugger: Removed some unused global variables. |
| |
| Tests: Updated the makefile for proper generation of the AAPITS suite. |
| |
| |
| ---------------------------------------- |
| 04 February 2015. Summary of changes for version 20150204: |
| |
| ACPICA kernel-resident subsystem: |
| |
| Updated all ACPICA copyrights and signons to 2014. Added the 2014 |
| copyright to all module headers and signons, including the standard Linux |
| header. This affects virtually every file in the ACPICA core subsystem, |
| iASL compiler, all ACPICA utilities, and the test suites. |
| |
| Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. |
| A raw gpe handling mechanism was created to allow better handling of GPE |
| storms that aren't easily managed by the normal handler. The raw handler |
| allows disabling/renabling of the GPE so that interrupt storms can be |
| avoided in cases where events cannot be timely serviced. In this |
| scenario, handlers should use the AcpiSetGpe() API to disable/enable the |
| GPE. This API will leave the reference counts undisturbed, thereby |
| preventing unintentional clearing of the GPE when the intent in only to |
| temporarily disable it. Raw handlers allow enabling and disabling of a |
| GPE by removing GPE register locking. As such, raw handlers much provide |
| their own locks while using GPE API's to protect access to GPE data |
| structures. |
| Lv Zheng |
| |
| Events: Always modify GPE registers under the GPE lock. |
| Applies GPE lock around AcpiFinishGpe() to protect access to GPE register |
| values. Reported as bug by joe.liu@apple.com. |
| |
| Unix makefiles: Separate option to disable optimizations and |
| _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the |
| NOOPT disable option and creates a separate flag (NOFORTIFY) for this |
| purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined |
| errors when building ACPICA. This allows disabling the option without |
| also having to disable optimazations. |
| David Box |
| |
| Current Release: |
| Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total |
| Debug Version: 199.2K Code, 82.4K Data, 281.6K Total |
| |
| -- |
| -------------------------------------- |
| 07 November 2014. Summary of changes for version 20141107: |
| |
| This release is available at https://acpica.org/downloads |
| |
| This release introduces and implements language extensions to ASL that |
| provide support for symbolic ("C-style") operators and expressions. These |
| language extensions are known collectively as ASL+. |
| |
| |
| 1) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a problem with disassembly of the UartSerialBus |
| macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. |
| Box. |
| |
| Disassembler: Fixed the Unicode macro support to add escape sequences. |
| All non-printable ASCII values are emitted as escape sequences, as well |
| as the standard escapes for quote and backslash. Ensures that the |
| disassembled macro can be correctly recompiled. |
| |
| iASL: Added Printf/Fprintf macros for formatted output. These macros are |
| translated to existing AML Concatenate and Store operations. Printf |
| writes to the ASL Debug object. Fprintf allows the specification of an |
| ASL name as the target. Only a single format specifier is required, %o, |
| since the AML interpreter dynamically converts objects to the required |
| type. David E. Box. |
| |
| (old) Store (Concatenate (Concatenate (Concatenate (Concatenate |
| (Concatenate (Concatenate (Concatenate ("", Arg0), |
| ": Unexpected value for "), Arg1), ", "), Arg2), |
| " at line "), Arg3), Debug) |
| |
| (new) Printf ("%o: Unexpected value for %o, %o at line %o", |
| Arg0, Arg1, Arg2, Arg3) |
| |
| (old) Store (Concatenate (Concatenate (Concatenate (Concatenate |
| ("", Arg1), ": "), Arg0), " Successful"), STR1) |
| |
| (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) |
| |
| iASL: Added debug options (-bp, -bt) to dynamically prune levels of the |
| ASL parse tree before the AML code is generated. This allows blocks of |
| ASL code to be removed in order to help locate and identify problem |
| devices and/or code. David E. Box. |
| |
| AcpiExec: Added support (-fi) for an optional namespace object |
| initialization file. This file specifies initial values for namespace |
| objects as necessary for debugging and testing different ASL code paths |
| that may be taken as a result of BIOS options. |
| |
| |
| 2) Overview of symbolic operator support for ASL (ASL+) |
| ------------------------------------------------------- |
| |
| As an extension to the ASL language, iASL implements support for symbolic |
| (C-style) operators for math and logical expressions. This can greatly |
| simplify ASL code as well as improve both readability and |
| maintainability. These language extensions can exist concurrently with |
| all legacy ASL code and expressions. |
| |
| The symbolic extensions are 100% compatible with existing AML |
| interpreters, since no new AML opcodes are created. To implement the |
| extensions, the iASL compiler transforms the symbolic expressions into |
| the legacy ASL/AML equivalents at compile time. |
| |
| Full symbolic expressions are supported, along with the standard C |
| precedence and associativity rules. |
| |
| Full disassembler support for the symbolic expressions is provided, and |
| creates an automatic migration path for existing ASL code to ASL+ code |
| via the disassembly process. By default, the disassembler now emits ASL+ |
| code with symbolic expressions. An option (-dl) is provided to force the |
| disassembler to emit legacy ASL code if desired. |
| |
| Below is the complete list of the currently supported symbolic operators |
| with examples. See the iASL User Guide for additional information. |
| |
| |
| ASL+ Syntax Legacy ASL Equivalent |
| ----------- --------------------- |
| |
| // Math operators |
| |
| Z = X + Y Add (X, Y, Z) |
| Z = X - Y Subtract (X, Y, Z) |
| Z = X * Y Multiply (X, Y, Z) |
| Z = X / Y Divide (X, Y, , Z) |
| Z = X % Y Mod (X, Y, Z) |
| Z = X << Y ShiftLeft (X, Y, Z) |
| Z = X >> Y ShiftRight (X, Y, Z) |
| Z = X & Y And (X, Y, Z) |
| Z = X | Y Or (X, Y, Z) |
| Z = X ^ Y Xor (X, Y, Z) |
| Z = ~X Not (X, Z) |
| X++ Increment (X) |
| X-- Decrement (X) |
| |
| // Logical operators |
| |
| (X == Y) LEqual (X, Y) |
| (X != Y) LNotEqual (X, Y) |
| (X < Y) LLess (X, Y) |
| (X > Y) LGreater (X, Y) |
| (X <= Y) LLessEqual (X, Y) |
| (X >= Y) LGreaterEqual (X, Y) |
| (X && Y) LAnd (X, Y) |
| (X || Y) LOr (X, Y) |
| (!X) LNot (X) |
| |
| // Assignment and compound assignment operations |
| |
| X = Y Store (Y, X) |
| X += Y Add (X, Y, X) |
| X -= Y Subtract (X, Y, X) |
| X *= Y Multiply (X, Y, X) |
| X /= Y Divide (X, Y, , X) |
| X %= Y Mod (X, Y, X) |
| X <<= Y ShiftLeft (X, Y, X) |
| X >>= Y ShiftRight (X, Y, X) |
| X &= Y And (X, Y, X) |
| X |= Y Or (X, Y, X) |
| X ^= Y Xor (X, Y, X) |
| |
| |
| 3) ASL+ Examples: |
| ----------------- |
| |
| Legacy ASL: |
| If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( |
| And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, |
| 0x03FB), |
| 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) |
| { |
| And (MEMB, 0xFFFFFFF0, SRMB) |
| Store (MEMB, Local2) |
| Store (PDBM, Local1) |
| And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) |
| Store (SRMB, MEMB) |
| Or (PDBM, 0x02, PDBM) |
| } |
| |
| ASL+ version: |
| If (((R510 & 0x03FB) == 0x02E0) || |
| ((R520 & 0x03FB) == 0x02E0) || |
| ((R530 & 0x03FB) == 0x02E0) || |
| ((R540 & 0x03FB) == 0x02E0)) |
| { |
| SRMB = (MEMB & 0xFFFFFFF0) |
| Local2 = MEMB |
| Local1 = PDBM |
| PDBM &= 0xFFFFFFFFFFFFFFF9 |
| MEMB = SRMB |
| PDBM |= 0x02 |
| } |
| |
| Legacy ASL: |
| Store (0x1234, Local1) |
| Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) |
| Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) |
| Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) |
| Store (Index (PKG1, 0x03), Local6) |
| Store (Add (Local3, Local2), Debug) |
| Add (Local1, 0x0F, Local2) |
| Add (Local1, Multiply (Local2, Local3), Local2) |
| Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) |
| |
| ASL+ version: |
| Local1 = 0x1234 |
| Local3 = (((Local1 + TEST) + 0x20) * Local2) |
| Local3 = (Local2 * ((Local1 + TEST) + 0x20)) |
| Local3 = (Local1 + (TEST + (0x20 * Local2))) |
| Local6 = Index (PKG1, 0x03) |
| Debug = (Local3 + Local2) |
| Local2 = (Local1 + 0x0F) |
| Local2 = (Local1 + (Local2 * Local3)) |
| Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) |
| |
| |
| ---------------------------------------- |
| 26 September 2014. Summary of changes for version 20140926: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated the GPIO operation region handler interface (GeneralPurposeIo). |
| In order to support GPIO Connection objects with multiple pins, along |
| with the related Field objects, the following changes to the interface |
| have been made: The Address is now defined to be the offset in bits of |
| the field unit from the previous invocation of a Connection. It can be |
| viewed as a "Pin Number Index" into the connection resource descriptor. |
| The BitWidth is the exact bit width of the field. It is usually one bit, |
| but not always. See the ACPICA reference guide (section 8.8.6.2.1) for |
| additional information and examples. |
| |
| GPE support: During ACPICA/GPE initialization, ensure that all GPEs with |
| corresponding _Lxx/_Exx methods are disabled (they may have been enabled |
| by the firmware), so that they cannot fire until they are enabled via |
| AcpiUpdateAllGpes. Rafael J. Wysocki. |
| |
| Added a new return flag for the Event/GPE status interfaces -- |
| AcpiGetEventStatus and AcpiGetGpeStatus. The new |
| ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or |
| GPE currently has a handler associated with it, and can thus actually |
| affect the system. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total |
| Debug Version: 192.8K Code, 79.9K Data, 272.7K Total |
| Previous Release: |
| Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total |
| Debug Version: 192.1K Code, 79.8K Data, 271.9K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a memory allocation/free regression introduced in 20140828 |
| that could cause the compiler to crash. This was introduced inadvertently |
| during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, |
| 1113. |
| |
| iASL: Removed two error messages that have been found to create false |
| positives, until they can be fixed and fully validated (ACPICA BZ 1112): |
| 1) Illegal forward reference within a method |
| 2) Illegal reference across two methods |
| |
| iASL: Implemented a new option (-lm) to create a hardware mapping file |
| that summarizes all GPIO, I2C, SPI, and UART connections. This option |
| works for both the compiler and disassembler. See the iASL compiler user |
| guide for additional information and examples (section 6.4.6). |
| |
| AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to |
| version 2. This corrects the AE_BAD_HEADER exception seen on systems with |
| a version 1 RSDP. Lv Zheng ACPICA BZ 1097. |
| |
| AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode |
| unless STDIN is actually a terminal. Assists with batch-mode processing. |
| ACPICA BZ 1114. |
| |
| Disassembler/AcpiHelp: Added another large group of recognized _HID |
| values. |
| |
| |
| ---------------------------------------- |
| 28 August 2014. Summary of changes for version 20140828: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a problem related to the internal use of the Timer() operator where |
| a 64-bit divide could cause an attempted link to a double-precision math |
| library. This divide is not actually necessary, so the code was |
| restructured to eliminate it. Lv Zheng. |
| |
| ACPI 5.1: Added support for the runtime validation of the _DSD package |
| (similar to the iASL support). |
| |
| ACPI 5.1/Headers: Added support for the GICC affinity subtable to the |
| SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total |
| Debug Version: 192.1K Code, 79.8K Data, 271.9K Total |
| Previous Release: |
| Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 |
| Debug Version: 192.0K Code, 79.7K Data, 271.7K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Fixed a problem on unix systems where the original terminal |
| state was not always properly restored upon exit. Seen when using the -v |
| option. ACPICA BZ 1104. |
| |
| iASL: Fixed a problem with the validation of the ranges/length within the |
| Memory24 resource descriptor. There was a boundary condition when the |
| range was equal to the (length -1) caused by the fact that these values |
| are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 |
| |
| Disassembler: Fixed a problem with the GpioInt descriptor interrupt |
| polarity |
| flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword |
| is |
| now supported properly. |
| |
| ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported |
| in the disassembler, data table compiler, and table template generator. |
| |
| iASL: Added a requirement for Device() objects that one of either a _HID |
| or _ADR must exist within the scope of a Device, as per the ACPI |
| specification. Remove a similar requirement that was incorrectly in place |
| for the _DSD object. |
| |
| iASL: Added error detection for illegal named references within control |
| methods that would cause runtime failures. Now trapped as errors are: 1) |
| References to objects within a non-parent control method. 2) Forward |
| references (within a method) -- for control methods, AML interpreters use |
| a one-pass parse of control methods. ACPICA BZ 1008. |
| |
| iASL: Added error checking for dependencies related to the _PSx power |
| methods. ACPICA BZ 1029. |
| 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, |
| _PS3. |
| 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same |
| scope. |
| |
| iASL and table compiler: Cleanup miscellaneous memory leaks by fully |
| deploying the existing object and string caches and adding new caches for |
| the table compiler. |
| |
| iASL: Split the huge parser source file into multiple subfiles to improve |
| manageability. Generation now requires the M4 macro preprocessor, which |
| is part of the Bison distribution on both unix and windows platforms. |
| |
| AcpiSrc: Fixed and removed all extraneous warnings generated during |
| entire ACPICA source code scan and/or conversion. |
| |
| |
| ---------------------------------------- |
| |
| 24 July 2014. Summary of changes for version 20140724: |
| |
| The ACPI 5.1 specification has been released and is available at: |
| http://uefi.org/specs/access |
| |
| |
| 0) ACPI 5.1 support in ACPICA: |
| |
| ACPI 5.1 is fully supported in ACPICA as of this release. |
| |
| New predefined names. Support includes iASL and runtime ACPICA |
| validation. |
| _CCA (Cache Coherency Attribute). |
| _DSD (Device-Specific Data). David Box. |
| |
| Modifications to existing ACPI tables. Support includes headers, iASL |
| Data Table compiler, disassembler, and the template generator. |
| FADT - New fields and flags. Graeme Gregory. |
| GTDT - One new subtable and new fields. Tomasz Nowicki. |
| MADT - Two new subtables. Tomasz Nowicki. |
| PCCT - One new subtable. |
| |
| Miscellaneous. |
| New notification type for System Resource Affinity change events. |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression introduced in 20140627 where a fault can happen during |
| the deletion of Alias AML namespace objects. The problem affected both |
| the core ACPICA and the ACPICA tools including iASL and AcpiExec. |
| |
| Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a |
| simple mechanism to enable wake GPEs that have no associated handler or |
| control method. Rafael Wysocki. |
| |
| Updated the AcpiEnableGpe interface to disallow the enable if there is no |
| handler or control method associated with the particular GPE. This will |
| help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. |
| |
| Updated GPE handling and dispatch by disabling the GPE before clearing |
| the status bit for edge-triggered GPEs. Lv Zheng. |
| |
| Added Timer() support to the AML Debug object. The current timer value is |
| now displayed with each invocation of (Store to) the debug object to |
| enable simple generation of execution times for AML code (method |
| execution for example.) ACPICA BZ 1093. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total |
| Debug Version: 192.0K Code, 79.7K Data, 271.7K Total |
| Previous Release: |
| Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total |
| Debug Version: 191.7K Code, 79.6K Data, 271.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed an issue with the recently added local printf implementation, |
| concerning width/precision specifiers that could cause incorrect output. |
| Lv Zheng. ACPICA BZ 1094. |
| |
| Disassembler: Added support to detect buffers that contain UUIDs and |
| disassemble them to an invocation of the ToUUID operator. Also emit |
| commented descriptions of known ACPI-related UUIDs. |
| |
| AcpiHelp: Added support to display known ACPI-related UUIDs. New option, |
| -u. Adds three new files. |
| |
| iASL: Update table compiler and disassembler for DMAR table changes that |
| were introduced in September 2013. With assistance by David Woodhouse. |
| |
| ---------------------------------------- |
| 27 June 2014. Summary of changes for version 20140627: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Formatted Output: Implemented local versions of standard formatted output |
| utilities such as printf, etc. Over time, it has been discovered that |
| there are in fact many portability issues with printf, and the addition |
| of this feature will fix/prevent these issues once and for all. Some |
| known issues are summarized below: |
| |
| 1) Output of 64-bit values is not portable. For example, UINT64 is %ull |
| for the Linux kernel and is %uI64 for some MSVC versions. |
| 2) Invoking printf consistently in a manner that is portable across both |
| 32-bit and 64-bit platforms is difficult at best in many situations. |
| 3) The output format for pointers varies from system to system (leading |
| zeros especially), and leads to inconsistent output from ACPICA across |
| platforms. |
| 4) Certain platform-specific printf formats may conflict with ACPICA use. |
| 5) If there is no local C library available, ACPICA now has local support |
| for printf. |
| |
| -- To address these printf issues in a complete manner, ACPICA now |
| directly implements a small subset of printf format specifiers, only |
| those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. |
| |
| Implemented support for ACPICA generation within the EFI environment. |
| Initially, the AcpiDump utility is supported in the UEFI shell |
| environment. Lv Zheng. |
| |
| Added a new external interface, AcpiLogError, to improve ACPICA |
| portability. This allows the host to redirect error messages from the |
| ACPICA utilities. Lv Zheng. |
| |
| Added and deployed new OSL file I/O interfaces to improve ACPICA |
| portability: |
| AcpiOsOpenFile |
| AcpiOsCloseFile |
| AcpiOsReadFile |
| AcpiOsWriteFile |
| AcpiOsGetFileOffset |
| AcpiOsSetFileOffset |
| There are C library implementations of these functions in the new file |
| service_layers/oslibcfs.c -- however, the functions can be implemented by |
| the local host in any way necessary. Lv Zheng. |
| |
| Implemented a mechanism to disable/enable ACPI table checksum validation |
| at runtime. This can be useful when loading tables very early during OS |
| initialization when it may not be possible to map the entire table in |
| order to compute the checksum. Lv Zheng. |
| |
| Fixed a buffer allocation issue for the Generic Serial Bus support. |
| Originally, a fixed buffer length was used. This change allows for |
| variable-length buffers based upon the protocol indicated by the field |
| access attributes. Reported by Lan Tianyu. Lv Zheng. |
| |
| Fixed a problem where an object detached from a namespace node was not |
| properly terminated/cleared and could cause a circular list problem if |
| reattached. ACPICA BZ 1063. David Box. |
| |
| Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. |
| |
| Fixed a possible memory leak in an error return path within the function |
| AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total |
| Debug Version: 191.7K Code, 79.6K Data, 271.3K Total |
| Previous Release: |
| Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total |
| Debug Version: 189.5K Code, 79.7K Data, 269.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Add dump of ASCII equivalent text within a comment at the |
| end of each line of the output for the Buffer() ASL operator. |
| |
| AcpiDump: Miscellaneous changes: |
| Fixed repetitive table dump in -n mode. |
| For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if |
| the ACPI 2.0 GUID fails. |
| |
| iASL: Fixed a problem where the compiler could fault if incorrectly given |
| an acpidump output file as input. ACPICA BZ 1088. David Box. |
| |
| AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if |
| they are invoked without any arguments. |
| |
| Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ |
| 1086. Colin Ian King. |
| |
| Disassembler: Cleaned up a block of code that extracts a parent Op |
| object. Added a comment that explains that the parent is guaranteed to be |
| valid in this case. ACPICA BZ 1069. |
| |
| |
| ---------------------------------------- |
| 24 April 2014. Summary of changes for version 20140424: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. |
| Some of these tables are known to contain a trailing NULL entry. Lv |
| Zheng. |
| |
| Removed an extraneous error message for the case where there are a large |
| number of system GPEs (> 124). This was the "32-bit FADT register is too |
| long to convert to GAS struct" message, which is irrelevant for GPEs |
| since the GPEx_BLK_LEN fields of the FADT are always used instead of the |
| (limited capacity) GAS bit length. Also, several changes to ensure proper |
| support for GPE numbers > 255, where some "GPE number" fields were 8-bits |
| internally. |
| |
| Implemented and deployed additional configuration support for the public |
| ACPICA external interfaces. Entire classes of interfaces can now be |
| easily modified or configured out, replaced by stubbed inline functions |
| by default. Lv Zheng. |
| |
| Moved all public ACPICA runtime configuration globals to the public |
| ACPICA external interface file for convenience. Also, removed some |
| obsolete/unused globals. See the file acpixf.h. Lv Zheng. |
| |
| Documentation: Added a new section to the ACPICA reference describing the |
| maximum number of GPEs that can be supported by the FADT-defined GPEs in |
| block zero and one. About 1200 total. See section 4.4.1 of the ACPICA |
| reference. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total |
| Debug Version: 189.5K Code, 79.7K Data, 269.2K Total |
| Previous Release: |
| Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total |
| Debug Version: 189.7K Code, 79.5K Data, 269.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL and disassembler: Add full support for the LPIT table (Low Power |
| Idle Table). Includes support in the disassembler, data table compiler, |
| and template generator. |
| |
| AcpiDump utility: |
| 1) Add option to force the use of the RSDT (over the XSDT). |
| 2) Improve validation of the RSDP signature (use 8 chars instead of 4). |
| |
| iASL: Add check for predefined packages that are too large. For |
| predefined names that contain subpackages, check if each subpackage is |
| too large. (Check for too small already exists.) |
| |
| Debugger: Updated the GPE command (which simulates a GPE by executing the |
| GPE code paths in ACPICA). The GPE device is now optional, and defaults |
| to the GPE 0/1 FADT-defined blocks. |
| |
| Unix application OSL: Update line-editing support. Add additional error |
| checking and take care not to reset terminal attributes on exit if they |
| were never set. This should help guarantee that the terminal is always |
| left in the previous state on program exit. |
| |
| |
| ---------------------------------------- |
| 25 March 2014. Summary of changes for version 20140325: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated the auto-serialize feature for control methods. This feature |
| automatically serializes all methods that create named objects in order |
| to prevent runtime errors. The update adds support to ignore the |
| currently executing AML SyncLevel when invoking such a method, in order |
| to prevent disruption of any existing SyncLevel priorities that may exist |
| in the AML code. Although the use of SyncLevels is relatively rare, this |
| change fixes a regression where an AE_AML_MUTEX_ORDER exception can |
| appear on some machines starting with the 20140214 release. |
| |
| Added a new external interface to allow the host to install ACPI tables |
| very early, before the namespace is even created. AcpiInstallTable gives |
| the host additional flexibility for ACPI table management. Tables can be |
| installed directly by the host as if they had originally appeared in the |
| XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables |
| (anything except the DSDT and FACS). Adds a new file, tbdata.c, along |
| with additional internal restructuring and cleanup. See the ACPICA |
| Reference for interface details. Lv Zheng. |
| |
| Added validation of the checksum for all incoming dynamically loaded |
| tables (via external interfaces or via AML Load/LoadTable operators). Lv |
| Zheng. |
| |
| Updated the use of the AcpiOsWaitEventsComplete interface during Notify |
| and GPE handler removal. Restructured calls to eliminate possible race |
| conditions. Lv Zheng. |
| |
| Added a warning for the use/execution of the ASL/AML Unload (table) |
| operator. This will help detect and identify machines that use this |
| operator if and when it is ever used. This operator has never been seen |
| in the field and the usage model and possible side-effects of the drastic |
| runtime action of a full table removal are unknown. |
| |
| Reverted the use of #pragma push/pop which was introduced in the 20140214 |
| release. It appears that push and pop are not implemented by enough |
| compilers to make the use of this feature feasible for ACPICA at this |
| time. However, these operators may be deployed in a future ACPICA |
| release. |
| |
| Added the missing EXPORT_SYMBOL macros for the install and remove SCI |
| handler interfaces. |
| |
| Source code generation: |
| 1) Disabled the use of the "strchr" macro for the gcc-specific |
| generation. For some versions of gcc, this macro can periodically expose |
| a compiler bug which in turn causes compile-time error(s). |
| 2) Added support for PPC64 compilation. Colin Ian King. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total |
| Debug Version: 189.7K Code, 79.5K Data, 269.2K Total |
| Previous Release: |
| Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total |
| Debug Version: 188.6K Code, 79.0K Data, 267.6K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Added several new features to improve the readability of |
| the resulting ASL code. Extra information is emitted within comment |
| fields in the ASL code: |
| 1) Known _HID/_CID values are decoded to descriptive text. |
| 2) Standard values for the Notify() operator are decoded to descriptive |
| text. |
| 3) Target operands are expanded to full pathnames (in a comment) when |
| possible. |
| |
| Disassembler: Miscellaneous updates for extern() handling: |
| 1) Abort compiler if file specified by -fe option does not exist. |
| 2) Silence unnecessary warnings about argument count mismatches. |
| 3) Update warning messages concerning unresolved method externals. |
| 4) Emit "UnknownObj" keyword for externals whose type cannot be |
| determined. |
| |
| AcpiHelp utility: |
| 1) Added the -a option to display both the ASL syntax and the AML |
| encoding for an input ASL operator. This effectively displays all known |
| information about an ASL operator with one AcpiHelp invocation. |
| 2) Added substring match support (similar to a wildcard) for the -i |
| (_HID/PNP IDs) option. |
| |
| iASL/Disassembler: Since this tool does not yet support execution on big- |
| endian machines, added detection of endianness and an error message if |
| execution is attempted on big-endian. Support for big-endian within iASL |
| is a feature that is on the ACPICA to-be-done list. |
| |
| AcpiBin utility: |
| 1) Remove option to extract binary files from an acpidump; this function |
| is made obsolete by the AcpiXtract utility. |
| 2) General cleanup of open files and allocated buffers. |
| |
| |
| ---------------------------------------- |
| 14 February 2014. Summary of changes for version 20140214: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented a new mechanism to proactively prevent problems with ill- |
| behaved reentrant control methods that create named ACPI objects. This |
| behavior is illegal as per the ACPI specification, but is nonetheless |
| frequently seen in the field. Previously, this could lead to an |
| AE_ALREADY_EXISTS exception if the method was actually entered by more |
| than one thread. This new mechanism detects such methods at table load |
| time and marks them "serialized" to prevent reentrancy. A new global |
| option, AcpiGbl_AutoSerializeMethods, has been added to disable this |
| feature if desired. This mechanism and global option obsoletes and |
| supersedes the previous AcpiGbl_SerializeAllMethods option. |
| |
| Added the "Windows 2013" string to the _OSI support. ACPICA will now |
| respond TRUE to _OSI queries with this string. It is the stated policy of |
| ACPICA to add new strings to the _OSI support as soon as possible after |
| they are defined. See the full ACPICA _OSI policy which has been added to |
| the utilities/utosi.c file. |
| |
| Hardened/updated the _PRT return value auto-repair code: |
| 1) Do not abort the repair on a single subpackage failure, continue to |
| check all subpackages. |
| 2) Add check for the minimum subpackage length (4). |
| 3) Properly handle extraneous NULL package elements. |
| |
| Added support to avoid the possibility of infinite loops when traversing |
| object linked lists. Never allow an infinite loop, even in the face of |
| corrupted object lists. |
| |
| ACPICA headers: Deployed the use of #pragma pack(push) and #pragma |
| pack(pop) directives to ensure that the ACPICA headers are independent of |
| compiler settings or other host headers. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total |
| Debug Version: 188.6K Code, 79.0K Data, 267.6K Total |
| Previous Release: |
| Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total |
| Debug Version: 187.5K Code, 78.3K Data, 265.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Table-compiler: Fixed a problem with support for the SPMI table. The |
| first reserved field was incorrectly forced to have a value of zero. This |
| change correctly forces the field to have a value of one. ACPICA BZ 1081. |
| |
| Debugger: Added missing support for the "Extra" and "Data" subobjects |
| when displaying object data. |
| |
| Debugger: Added support to display entire object linked lists when |
| displaying object data. |
| |
| iASL: Removed the obsolete -g option to obtain ACPI tables from the |
| Windows registry. This feature has been superseded by the acpidump |
| utility. |
| |
| |
| ---------------------------------------- |
| 14 January 2014. Summary of changes for version 20140114: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Updated all ACPICA copyrights and signons to 2014. Added the 2014 |
| copyright to all module headers and signons, including the standard Linux |
| header. This affects virtually every file in the ACPICA core subsystem, |
| iASL compiler, all ACPICA utilities, and the test suites. |
| |
| Improved parameter validation for AcpiInstallGpeBlock. Added the |
| following checks: |
| 1) The incoming device handle refers to type ACPI_TYPE_DEVICE. |
| 2) There is not already a GPE block attached to the device. |
| Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a |
| device. |
| |
| Correctly support "references" in the ACPI_OBJECT. This change fixes the |
| support to allow references (namespace nodes) to be passed as arguments |
| to control methods via the evaluate object interface. This is probably |
| most useful for testing purposes, however. |
| |
| Improved support for 32/64 bit physical addresses in printf()-like |
| output. This change improves the support for physical addresses in printf |
| debug statements and other output on both 32-bit and 64-bit hosts. It |
| consistently outputs the appropriate number of bytes for each host. The |
| %p specifier is unsatisfactory since it does not emit uniform output on |
| all hosts/clib implementations (on some, leading zeros are not supported, |
| leading to difficult-to-read output). |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total |
| Debug Version: 187.5K Code, 78.3K Data, 265.8K Total |
| Previous Release: |
| Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total |
| Debug Version: 185.6K Code, 77.3K Data, 262.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fix a possible fault when using the Connection() operator. Fixes a |
| problem if the parent Field definition for the Connection operator refers |
| to an operation region that does not exist. ACPICA BZ 1064. |
| |
| AcpiExec: Load of local test tables is now optional. The utility has the |
| capability to load some various tables to test features of ACPICA. |
| However, there are enough of them that the output of the utility became |
| confusing. With this change, only the required local tables are displayed |
| (RSDP, XSDT, etc.) along with the actual tables loaded via the command |
| line specification. This makes the default output simler and easier to |
| understand. The -el command line option restores the original behavior |
| for testing purposes. |
| |
| AcpiExec: Added support for overlapping operation regions. This change |
| expands the simulation of operation regions by supporting regions that |
| overlap within the given address space. Supports SystemMemory and |
| SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. |
| |
| AcpiExec: Added region handler support for PCI_Config and EC spaces. This |
| allows AcpiExec to simulate these address spaces, similar to the current |
| support for SystemMemory and SystemIO. |
| |
| Debugger: Added new command to read/write/compare all namespace objects. |
| The command "test objects" will exercise the entire namespace by writing |
| new values to each data object, and ensuring that the write was |
| successful. The original value is then restored and verified. |
| |
| Debugger: Added the "test predefined" command. This change makes this |
| test public and puts it under the new "test" command. The test executes |
| each and every predefined name within the current namespace. |
| |
| |
| ---------------------------------------- |
| 18 December 2013. Summary of changes for version 20131218: |
| |
| Global note: The ACPI 5.0A specification was released this month. There |
| are no changes needed for ACPICA since this release of ACPI is an |
| errata/clarification release. The specification is available at |
| acpi.info. |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Added validation of the XSDT root table if it is present. Some older |
| platforms contain an XSDT that is ill-formed or otherwise invalid (such |
| as containing some or all entries that are NULL pointers). This change |
| adds a new function to validate the XSDT before actually using it. If the |
| XSDT is found to be invalid, ACPICA will now automatically fall back to |
| using the RSDT instead. Original implementation by Zhao Yakui. Ported to |
| ACPICA and enhanced by Lv Zheng and Bob Moore. |
| |
| Added a runtime option to ignore the XSDT and force the use of the RSDT. |
| This change adds a runtime option that will force ACPICA to use the RSDT |
| instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec |
| requires that an XSDT be used instead of the RSDT, the XSDT has been |
| found to be corrupt or ill-formed on some machines. Lv Zheng. |
| |
| Added a runtime option to favor 32-bit FADT register addresses over the |
| 64-bit addresses. This change adds an option to favor 32-bit FADT |
| addresses when there is a conflict between the 32-bit and 64-bit versions |
| of the same register. The default behavior is to use the 64-bit version |
| in accordance with the ACPI specification. This can now be overridden via |
| the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. |
| |
| During the change above, the internal "Convert FADT" and "Verify FADT" |
| functions have been merged to simplify the code, making it easier to |
| understand and maintain. ACPICA BZ 933. |
| |
| Improve exception reporting and handling for GPE block installation. |
| Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the |
| status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. |
| |
| Added helper macros to extract bus/segment numbers from the HEST table. |
| This change adds two macros to extract the encoded bus and segment |
| numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. |
| Betty Dall <betty.dall@hp.com> |
| |
| Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used |
| by ACPICA. It is not a public macro, so it should have no effect on |
| existing OSV code. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total |
| Debug Version: 185.6K Code, 77.3K Data, 262.9K Total |
| Previous Release: |
| Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total |
| Debug Version: 185.1K Code, 77.2K Data, 262.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Improved pathname support for emitted External() |
| statements. This change adds full pathname support for external names |
| that have been resolved internally by the inclusion of additional ACPI |
| tables (via the iASL -e option). Without this change, the disassembler |
| can emit multiple externals for the same object, or it become confused |
| when the Scope() operator is used on an external object. Overall, greatly |
| improves the ability to actually recompile the emitted ASL code when |
| objects a referenced across multiple ACPI tables. Reported by Michael |
| Tsirkin (mst@redhat.com). |
| |
| Tests/ASLTS: Updated functional control suite to execute with no errors. |
| David Box. Fixed several errors related to the testing of the interpreter |
| slack mode. Lv Zheng. |
| |
| iASL: Added support to detect names that are declared within a control |
| method, but are unused (these are temporary names that are only valid |
| during the time the method is executing). A remark is issued for these |
| cases. ACPICA BZ 1022. |
| |
| iASL: Added full support for the DBG2 table. Adds full disassembler, |
| table compiler, and template generator support for the DBG2 table (Debug |
| Port 2 table). |
| |
| iASL: Added full support for the PCCT table, update the table definition. |
| Updates the PCCT table definition in the actbl3.h header and adds table |
| compiler and template generator support. |
| |
| iASL: Added an option to emit only error messages (no warnings/remarks). |
| The -ve option will enable only error messages, warnings and remarks are |
| suppressed. This can simplify debugging when only the errors are |
| important, such as when an ACPI table is disassembled and there are many |
| warnings and remarks -- but only the actual errors are of real interest. |
| |
| Example ACPICA code (source/tools/examples): Updated the example code so |
| that it builds to an actual working program, not just example code. Added |
| ACPI tables and execution of an example control method in the DSDT. Added |
| makefile support for Unix generation. |
| |
| |
| ---------------------------------------- |
| 15 November 2013. Summary of changes for version 20131115: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Resource Manager: Fixed loop termination for the "get AML length" |
| function. The loop previously had an error termination on a NULL resource |
| pointer, which can never happen since the loop simply increments a valid |
| resource pointer. This fix changes the loop to terminate with an error on |
| an invalid end-of-buffer condition. The problem can be seen as an |
| infinite loop by callers to AcpiSetCurrentResources with an invalid or |
| corrupted resource descriptor, or a resource descriptor that is missing |
| an END_TAG descriptor. Reported by Dan Carpenter |
| <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. |
| |
| Table unload and ACPICA termination: Delete all attached data objects |
| during namespace node deletion. This fix updates namespace node deletion |
| to delete the entire list of attached objects (attached via |
| AcpiAttachObject) instead of just one of the attached items. ACPICA BZ |
| 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org). |
| |
| ACPICA termination: Added support to delete all objects attached to the |
| root namespace node. This fix deletes any and all objects that have been |
| attached to the root node via AcpiAttachData. Previously, none of these |
| objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. |
| |
| Debug output: Do not emit the function nesting level for the in-kernel |
| build. The nesting level is really only useful during a single-thread |
| execution. Therefore, only enable this output for the AcpiExec utility. |
| Also, only emit the thread ID when executing under AcpiExec (Context |
| switches are still always detected and a message is emitted). ACPICA BZ |
| 972. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total |
| Debug Version: 185.1K Code, 77.2K Data, 262.3K Total |
| Previous Release: |
| Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total |
| Debug Version: 185.2K Code, 77.2K Data, 262.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the |
| correct portable POSIX header for terminal control functions. |
| |
| Disassembler: Fixed control method invocation issues related to the use |
| of the CondRefOf() operator. The problem is seen in the disassembly where |
| control method invocations may not be disassembled properly if the |
| control method name has been used previously as an argument to CondRefOf. |
| The solution is to not attempt to emit an external declaration for the |
| CondRefOf target (it is not necessary in the first place). This prevents |
| disassembler object type confusion. ACPICA BZ 988. |
| |
| Unix Makefiles: Added an option to disable compiler optimizations and the |
| _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA |
| with optimizations (reportedly, gcc 4.4 for example). This change adds a |
| command line option for make (NOOPT) that disables all compiler |
| optimizations and the _FORTIFY_SOURCE compiler flag. The default |
| optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ |
| 1034. Lv Zheng, Bob Moore. |
| |
| Tests/ASLTS: Added options to specify individual test cases and modes. |
| This allows testers running aslts.sh to optionally specify individual |
| test modes and test cases. Also added an option to disable the forced |
| generation of the ACPICA tools from source if desired. Lv Zheng. |
| |
| ---------------------------------------- |
| 27 September 2013. Summary of changes for version 20130927: |
| |
| This release is available at https://acpica.org/downloads |
| |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a problem with store operations to reference objects. This change |
| fixes a problem where a Store operation to an ArgX object that contained |
| a |
| reference to a field object did not complete the automatic dereference |
| and |
| then write to the actual field object. Instead, the object type of the |
| field object was inadvertently changed to match the type of the source |
| operand. The new behavior will actually write to the field object (buffer |
| field or field unit), thus matching the correct ACPI-defined behavior. |
| |
| Implemented support to allow the host to redefine individual OSL |
| prototypes. This change enables the host to redefine OSL prototypes found |
| in the acpiosxf.h file. This allows the host to implement OSL interfaces |
| with a macro or inlined function. Further, it allows the host to add any |
| additional required modifiers such as __iomem, __init, __exit, etc., as |
| necessary on a per-interface basis. Enables maximum flexibility for the |
| OSL interfaces. Lv Zheng. |
| |
| Hardcoded the access width for the FADT-defined reset register. The ACPI |
| specification requires the reset register width to be 8 bits. ACPICA now |
| hardcodes the width to 8 and ignores the FADT width value. This provides |
| compatibility with other ACPI implementations that have allowed BIOS code |
| with bad register width values to go unnoticed. Matthew Garett, Bob |
| Moore, |
| Lv Zheng. |
| |
| Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is |
| used |
| in the OSL header (acpiosxf). The change modifies the position of this |
| macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid |
| build issues if the OSL defines the implementation of the interface to be |
| an inline stub function. Lv Zheng. |
| |
| Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA |
| initialization interfaces. This change adds a new macro for the main init |
| and terminate external interfaces in order to support hosts that require |
| additional or different processing for these functions. Changed from |
| ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv |
| Zheng, Bob Moore. |
| |
| Cleaned up the memory allocation macros for configurability. In the |
| common |
| case, the ACPI_ALLOCATE and related macros now resolve directly to their |
| respective AcpiOs* OSL interfaces. Two options: |
| 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by |
| default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. |
| 2) For AcpiExec (and for debugging), the macros can optionally be |
| resolved |
| to the local ACPICA interfaces that track each allocation (local tracking |
| is used to immediately detect memory leaks). |
| Lv Zheng. |
| |
| Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel |
| to predefine this macro to either TRUE or FALSE during the system build. |
| |
| Replaced __FUNCTION_ with __func__ in the gcc-specific header. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total |
| Debug Version: 185.2K Code, 77.2K Data, 262.4K Total |
| Previous Release: |
| Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total |
| Debug Version: 184.4K Code, 76.8K Data, 261.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented wildcard support for the -e option. This simplifies use |
| when there are many SSDTs that must be included to resolve external |
| method |
| declarations. ACPICA BZ 1041. Example: |
| iasl -e ssdt*.dat -d dsdt.dat |
| |
| AcpiExec: Add history/line-editing for Unix/Linux systems. This change |
| adds a portable module that implements full history and limited line |
| editing for Unix and Linux systems. It does not use readline() due to |
| portability issues. Instead it uses the POSIX termio interface to put the |
| terminal in raw input mode so that the various special keys can be |
| trapped |
| (such as up/down-arrow for history support and left/right-arrow for line |
| editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. |
| |
| AcpiXtract: Add support to handle (ignore) "empty" lines containing only |
| one or more spaces. This provides compatible with early or different |
| versions of the AcpiDump utility. ACPICA BZ 1044. |
| |
| AcpiDump: Do not ignore tables that contain only an ACPI table header. |
| Apparently, some BIOSs create SSDTs that contain an ACPI table header but |
| no other data. This change adds support to dump these tables. Any tables |
| shorter than the length of an ACPI table header remain in error (an error |
| message is emitted). Reported by Yi Li. |
| |
| Debugger: Echo actual command along with the "unknown command" message. |
| |
| ---------------------------------------- |
| 23 August 2013. Summary of changes for version 20130823: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Implemented support for host-installed System Control Interrupt (SCI) |
| handlers. Certain ACPI functionality requires the host to handle raw |
| SCIs. For example, the "SCI Doorbell" that is defined for memory power |
| state support requires the host device driver to handle SCIs to examine |
| if the doorbell has been activated. Multiple SCI handlers can be |
| installed to allow for future expansion. New external interfaces are |
| AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for |
| details. Lv Zheng, Bob Moore. ACPICA BZ 1032. |
| |
| Operation region support: Never locally free the handler "context" |
| pointer. This change removes some dangerous code that attempts to free |
| the handler context pointer in some (rare) circumstances. The owner of |
| the handler owns this pointer and the ACPICA code should never touch it. |
| Although not seen to be an issue in any kernel, it did show up as a |
| problem (fault) under AcpiExec. Also, set the internal storage field for |
| the context pointer to zero when the region is deactivated, simply for |
| sanity. David Box. ACPICA BZ 1039. |
| |
| AcpiRead: On error, do not modify the return value target location. If an |
| error happens in the middle of a split 32/32 64-bit I/O operation, do not |
| modify the target of the return value pointer. Makes the code consistent |
| with the rest of ACPICA. Bjorn Helgaas. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total |
| Debug Version: 184.4K Code, 76.8K Data, 261.2K Total |
| Previous Release: |
| Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total |
| Debug Version: 185.4K Code, 77.1K Data, 262.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiDump: Implemented several new features and fixed some problems: |
| 1) Added support to dump the RSDP, RSDT, and XSDT tables. |
| 2) Added support for multiple table instances (SSDT, UEFI). |
| 3) Added option to dump "customized" (overridden) tables (-c). |
| 4) Fixed a problem where some table filenames were improperly |
| constructed. |
| 5) Improved some error messages, removed some unnecessary messages. |
| |
| iASL: Implemented additional support for disassembly of ACPI tables that |
| contain invocations of external control methods. The -fe<file> option |
| allows the import of a file that specifies the external methods along |
| with the required number of arguments for each -- allowing for the |
| correct disassembly of the table. This is a workaround for a limitation |
| of AML code where the disassembler often cannot determine the number of |
| arguments required for an external control method and generates incorrect |
| ASL code. See the iASL reference for details. ACPICA BZ 1030. |
| |
| Debugger: Implemented a new command (paths) that displays the full |
| pathnames (namepaths) and object types of all objects in the namespace. |
| This is an alternative to the namespace command. |
| |
| Debugger: Implemented a new command (sci) that invokes the SCI dispatch |
| mechanism and any installed handlers. |
| |
| iASL: Fixed a possible segfault for "too many parent prefixes" condition. |
| This can occur if there are too many parent prefixes in a namepath (for |
| example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. |
| |
| Application OSLs: Set the return value for the PCI read functions. These |
| functions simply return AE_OK, but should set the return value to zero |
| also. This change implements this. ACPICA BZ 1038. |
| |
| Debugger: Prevent possible command line buffer overflow. Increase the |
| size of a couple of the debugger line buffers, and ensure that overflow |
| cannot happen. ACPICA BZ 1037. |
| |
| iASL: Changed to abort immediately on serious errors during the parsing |
| phase. Due to the nature of ASL, there is no point in attempting to |
| compile these types of errors, and they typically end up causing a |
| cascade of hundreds of errors which obscure the original problem. |
| |
| ---------------------------------------- |
| 25 July 2013. Summary of changes for version 20130725: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a problem with the DerefOf operator where references to FieldUnits |
| and BufferFields incorrectly returned the parent object, not the actual |
| value of the object. After this change, a dereference of a FieldUnit |
| reference results in a read operation on the field to get the value, and |
| likewise, the appropriate BufferField value is extracted from the target |
| buffer. |
| |
| Fixed a problem where the _WAK method could cause a fault under these |
| circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK |
| method returned no value. The problem is rarely seen because most kernels |
| run ACPICA in slack mode. |
| |
| For the DerefOf operator, a fatal error now results if an attempt is made |
| to dereference a reference (created by the Index operator) to a NULL |
| package element. Provides compatibility with other ACPI implementations, |
| and this behavior will be added to a future version of the ACPI |
| specification. |
| |
| The ACPI Power Management Timer (defined in the FADT) is now optional. |
| This provides compatibility with other ACPI implementations and will |
| appear in the next version of the ACPI specification. If there is no PM |
| Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of |
| zero in the FADT indicates no PM timer. |
| |
| Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This |
| allows the host to globally enable/disable all vendor strings, all |
| feature strings, or both. Intended to be primarily used for debugging |
| purposes only. Lv Zheng. |
| |
| Expose the collected _OSI data to the host via a global variable. This |
| data tracks the highest level vendor ID that has been invoked by the BIOS |
| so that the host (and potentially ACPICA itself) can change behaviors |
| based upon the age of the BIOS. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total |
| Debug Version: 184.4K Code, 76.8K Data, 261.2K Total |
| Previous Release: |
| Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total |
| Debug Version: 184.1K Code, 76.7K Data, 260.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Created the following enhancements for the -so option (create |
| offset table): |
| 1)Add offsets for the last nameseg in each namepath for every supported |
| object type |
| 2)Add support for Processor, Device, Thermal Zone, and Scope objects |
| 3)Add the actual AML opcode for the parent object of every supported |
| object type |
| 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects |
| |
| Disassembler: Emit all unresolved external symbols in a single block. |
| These are external references to control methods that could not be |
| resolved, and thus, the disassembler had to make a guess at the number of |
| arguments to parse. |
| |
| iASL: The argument to the -T option (create table template) is now |
| optional. If not specified, the default table is a DSDT, typically the |
| most common case. |
| |
| ---------------------------------------- |
| 26 June 2013. Summary of changes for version 20130626: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed an issue with runtime repair of the _CST object. Null or invalid |
| elements were not always removed properly. Lv Zheng. |
| |
| Removed an arbitrary restriction of 256 GPEs per GPE block (such as the |
| FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, |
| the maximum number of GPEs is 1016. Use of multiple GPE block devices |
| makes the system-wide number of GPEs essentially unlimited. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total |
| Debug Version: 184.1K Code, 76.7K Data, 260.8K Total |
| Previous Release: |
| Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total |
| Debug Version: 184.1K Code, 76.8K Data, 260.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Portable AcpiDump: Implemented full support for the Linux and FreeBSD |
| hosts. Now supports Linux, FreeBSD, and Windows. |
| |
| Disassembler: Added some missing types for the HEST and EINJ tables: "Set |
| Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". |
| |
| iASL/Preprocessor: Implemented full support for nested |
| #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. |
| |
| Disassembler: Expanded maximum output string length to 64K. Was 256 bytes |
| max. The original purpose of this constraint was to limit the amount of |
| debug output. However, the string function in question (UtPrintString) is |
| now used for the disassembler also, where 256 bytes is insufficient. |
| Reported by RehabMan@GitHub. |
| |
| iASL/DataTables: Fixed some problems and issues with compilation of DMAR |
| tables. ACPICA BZ 999. Lv Zheng. |
| |
| iASL: Fixed a couple of error exit issues that could result in a "Could |
| not delete <file>" message during ASL compilation. |
| |
| AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though |
| the actual signatures for these tables are "FACP" and "APIC", |
| respectively. |
| |
| AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI |
| tables are allowed to have multiple instances. |
| |
| ---------------------------------------- |
| 17 May 2013. Summary of changes for version 20130517: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a regression introduced in version 20130328 for _INI methods. This |
| change fixes a problem introduced in 20130328 where _INI methods are no |
| longer executed properly because of a memory block that was not |
| initialized correctly. ACPICA BZ 1016. Tomasz Nowicki |
| <tomasz.nowicki@linaro.org>. |
| |
| Fixed a possible problem with the new extended sleep registers in the |
| ACPI |
| 5.0 FADT. Do not use these registers (even if populated) unless the HW- |
| reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ |
| 1020. Lv Zheng. |
| |
| Implemented return value repair code for _CST predefined objects: Sort |
| the |
| list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. |
| |
| Implemented a debug-only option to disable loading of SSDTs from the |
| RSDT/XSDT during ACPICA initialization. This can be useful for debugging |
| ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in |
| acglobal.h - ACPICA BZ 1005. Lv Zheng. |
| |
| Fixed some issues in the ACPICA initialization and termination code: |
| Tomasz Nowicki <tomasz.nowicki@linaro.org> |
| 1) Clear events initialized flag upon event component termination. ACPICA |
| BZ 1013. |
| 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. |
| 3) Delete global lock pending lock during termination. ACPICA BZ 1012. |
| 4) Clear debug buffer global on termination to prevent possible multiple |
| delete. ACPICA BZ 1010. |
| |
| Standardized all switch() blocks across the entire source base. After |
| many |
| years, different formatting for switch() had crept in. This change makes |
| the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. |
| |
| Split some files to enhance ACPICA modularity and configurability: |
| 1) Split buffer dump routines into utilities/utbuffer.c |
| 2) Split internal error message routines into utilities/uterror.c |
| 3) Split table print utilities into tables/tbprint.c |
| 4) Split iASL command-line option processing into asloptions.c |
| |
| Makefile enhancements: |
| 1) Support for all new files above. |
| 2) Abort make on errors from any subcomponent. Chao Guan. |
| 3) Add build support for Apple Mac OS X. Liang Qi. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total |
| Debug Version: 184.1K Code, 76.8K Data, 260.9K Total |
| Previous Release: |
| Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total |
| Debug Version: 183.5K Code, 76.6K Data, 260.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| New utility: Implemented an easily portable version of the acpidump |
| utility to extract ACPI tables from the system (or a file) in an ASCII |
| hex |
| dump format. The top-level code implements the various command line |
| options, file I/O, and table dump routines. To port to a new host, only |
| three functions need to be implemented to get tables -- since this |
| functionality is OS-dependent. See the tools/acpidump/apmain.c module and |
| the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: |
| 1) The Windows version obtains the ACPI tables from the Registry. |
| 2) The Linux version is under development. |
| 3) Other hosts - If an OS-dependent module is submitted, it will be |
| distributed with ACPICA. |
| |
| iASL: Fixed a regression for -D preprocessor option (define symbol). A |
| restructuring/change to the initialization sequence caused this option to |
| no longer work properly. |
| |
| iASL: Implemented a mechanism to disable specific warnings and remarks. |
| Adds a new command line option, "-vw <messageid> as well as "#pragma |
| disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. |
| |
| iASL: Fix for too-strict package object validation. The package object |
| validation for return values from the predefined names is a bit too |
| strict, it does not allow names references within the package (which will |
| be resolved at runtime.) These types of references cannot be validated at |
| compile time. This change ignores named references within package objects |
| for names that return or define static packages. |
| |
| Debugger: Fixed the 80-character command line limitation for the History |
| command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. |
| |
| iASL: Added control method and package support for the -so option |
| (generates AML offset table for BIOS support.) |
| |
| iASL: issue a remark if a non-serialized method creates named objects. If |
| a thread blocks within the method for any reason, and another thread |
| enters the method, the method will fail because an attempt will be made |
| to |
| create the same (named) object twice. In this case, issue a remark that |
| the method should be marked serialized. NOTE: may become a warning later. |
| ACPICA BZ 909. |
| |
| ---------------------------------------- |
| 18 April 2013. Summary of changes for version 20130418: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed a possible buffer overrun during some rare but specific field unit |
| read operations. This overrun can only happen if the DSDT version is 1 -- |
| meaning that all AML integers are 32 bits -- and the field length is |
| between 33 and 55 bits long. During the read, an internal buffer object |
| is |
| created for the field unit because the field is larger than an integer |
| (32 |
| bits). However, in this case, the buffer will be incorrectly written |
| beyond the end because the buffer length is less than the internal |
| minimum |
| of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes |
| long, but a full 8 bytes will be written. |
| |
| Updated the Embedded Controller "orphan" _REG method support. This refers |
| to _REG methods under the EC device that have no corresponding operation |
| region. This is allowed by the ACPI specification. This update removes a |
| dependency on the existence an ECDT table. It will execute an orphan _REG |
| method as long as the operation region handler for the EC is installed at |
| the EC device node and not the namespace root. Rui Zhang (original |
| update), Bob Moore (update/integrate). |
| |
| Implemented run-time argument typechecking for all predefined ACPI names |
| (_STA, _BIF, etc.) This change performs object typechecking on all |
| incoming arguments for all predefined names executed via |
| AcpiEvaluateObject. This ensures that ACPI-related device drivers are |
| passing correct object types as well as the correct number of arguments |
| (therefore identifying any issues immediately). Also, the ASL/namespace |
| definition of the predefined name is checked against the ACPI |
| specification for the proper argument count. Adds one new file, |
| nsarguments.c |
| |
| Changed an exception code for the ASL UnLoad() operator. Changed the |
| exception code for the case where the input DdbHandle is invalid, from |
| AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. |
| |
| Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the |
| global makefile. The use of this flag causes compiler errors on earlier |
| versions of GCC, so it has been removed for compatibility. |
| |
| Miscellaneous cleanup: |
| 1) Removed some unused/obsolete macros |
| 2) Fixed a possible memory leak in the _OSI support |
| 3) Removed an unused variable in the predefined name support |
| 4) Windows OSL: remove obsolete reference to a memory list field |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Current Release: |
| Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total |
| Debug Version: 183.0K Code, 76.0K Data, 259.0K Total |
| Previous Release: |
| Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total |
| Debug Version: 183.5K Code, 76.6K Data, 260.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Added installation of a handler for the SystemCMOS address |
| space. This prevents control method abort if a method accesses this |
| space. |
| |
| AcpiExec: Added support for multiple EC devices, and now install EC |
| operation region handler(s) at the actual EC device instead of the |
| namespace root. This reflects the typical behavior of host operating |
| systems. |
| |
| AcpiExec: Updated to ensure that all operation region handlers are |
| installed before the _REG methods are executed. This prevents a _REG |
| method from aborting if it accesses an address space has no handler. |
| AcpiExec installs a handler for every possible address space. |
| |
| Debugger: Enhanced the "handlers" command to display non-root handlers. |
| This change enhances the handlers command to display handlers associated |
| with individual devices throughout the namespace, in addition to the |
| currently supported display of handlers associated with the root |
| namespace |
| node. |
| |
| ASL Test Suite: Several test suite errors have been identified and |
| resolved, reducing the total error count during execution. Chao Guan. |
| |
| ---------------------------------------- |
| 28 March 2013. Summary of changes for version 20130328: |
| |
| 1) ACPICA kernel-resident subsystem: |
| |
| Fixed several possible race conditions with the internal object reference |
| counting mechanism. Some of the external ACPICA interfaces update object |
| reference counts without holding the interpreter or namespace lock. This |
| change adds a spinlock to protect reference count updates on the internal |
| ACPICA objects. Reported by and with assistance from Andriy Gapon |
| (avg@FreeBSD.org). |
| |
| FADT support: Removed an extraneous warning for very large GPE register |
| sets. This change removes a size mismatch warning if the legacy length |
| field for a GPE register set is larger than the 64-bit GAS structure can |
| accommodate. GPE register sets can be larger than the 255-bit width |
| limitation of the GAS structure. Linn Crosetto (linn@hp.com). |
| |
| _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error |
| return from this interface. Handles a possible timeout case if |
| ACPI_WAIT_FOREVER is modified by the host to be a value less than |
| "forever". Jung-uk Kim. |
| |
| Predefined name support: Add allowed/required argument type information |
| to |
| the master predefined info table. This change adds the infrastructure to |
| enable typechecking on incoming arguments for all predefined |
| methods/objects. It does not actually contain the code that will fully |
| utilize this information, this is still under development. Also condenses |
| some duplicate code for the predefined names into a new module, |
| utilities/utpredef.c |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total |
| Debug Version: 182.9K Code, 75.6K Data, 258.5K Total |
| Current Release: |
| Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total |
| Debug Version: 183.0K Code, 76.0K Data, 259.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented a new option to simplify the development of ACPI- |
| related |
| BIOS code. Adds support for a new "offset table" output file. The -so |
| option will create a C table containing the AML table offsets of various |
| named objects in the namespace so that BIOS code can modify them easily |
| at |
| boot time. This can simplify BIOS runtime code by eliminating expensive |
| searches for "magic values", enhancing boot times and adding greater |
| reliability. With assistance from Lee Hamel. |
| |
| iASL: Allow additional predefined names to return zero-length packages. |
| Now, all predefined names that are defined by the ACPI specification to |
| return a "variable-length package of packages" are allowed to return a |
| zero length top-level package. This allows the BIOS to tell the host that |
| the requested feature is not supported, and supports existing BIOS/ASL |
| code and practices. |
| |
| iASL: Changed the "result not used" warning to an error. This is the case |
| where an ASL operator is effectively a NOOP because the result of the |
| operation is not stored anywhere. For example: |
| Add (4, Local0) |
| There is no target (missing 3rd argument), nor is the function return |
| value used. This is potentially a very serious problem -- since the code |
| was probably intended to do something, but for whatever reason, the value |
| was not stored. Therefore, this issue has been upgraded from a warning to |
| an error. |
| |
| AcpiHelp: Added allowable/required argument types to the predefined names |
| info display. This feature utilizes the recent update to the predefined |
| names table (above). |
| |
| ---------------------------------------- |
| 14 February 2013. Summary of changes for version 20130214: |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Fixed a possible regression on some hosts: Reinstated the safe return |
| macros (return_ACPI_STATUS, etc.) that ensure that the argument is |
| evaluated only once. Although these macros are not needed for the ACPICA |
| code itself, they are often used by ACPI-related host device drivers |
| where |
| the safe feature may be necessary. |
| |
| Fixed several issues related to the ACPI 5.0 reduced hardware support |
| (SOC): Now ensure that if the platform declares itself as hardware- |
| reduced |
| via the FADT, the following functions become NOOPs (and always return |
| AE_OK) because ACPI is always enabled by definition on these machines: |
| AcpiEnable |
| AcpiDisable |
| AcpiHwGetMode |
| AcpiHwSetMode |
| |
| Dynamic Object Repair: Implemented additional runtime repairs for |
| predefined name return values. Both of these repairs can simplify code in |
| the related device drivers that invoke these methods: |
| 1) For the _STR and _MLS names, automatically repair/convert an ASCII |
| string to a Unicode buffer. |
| 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with |
| a |
| lone end tag descriptor in the following cases: A Return(0) was executed, |
| a null buffer was returned, or no object at all was returned (non-slack |
| mode only). Adds a new file, nsconvert.c |
| ACPICA BZ 998. Bob Moore, Lv Zheng. |
| |
| Resource Manager: Added additional code to prevent possible infinite |
| loops |
| while traversing corrupted or ill-formed resource template buffers. Check |
| for zero-length resource descriptors in all code that loops through |
| resource templates (the length field is used to index through the |
| template). This change also hardens the external AcpiWalkResources and |
| AcpiWalkResourceBuffer interfaces. |
| |
| Local Cache Manager: Enhanced the main data structure to eliminate an |
| unnecessary mechanism to access the next object in the list. Actually |
| provides a small performance enhancement for hosts that use the local |
| ACPICA cache manager. Jung-uk Kim. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total |
| Debug Version: 182.3K Code, 75.0K Data, 257.3K Total |
| Current Release: |
| Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total |
| Debug Version: 182.9K Code, 75.6K Data, 258.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: Fixed several issues with the definition of the ACPI |
| 5.0 RASF table (RAS Feature Table). This change incorporates late changes |
| that were made to the ACPI 5.0 specification. |
| |
| iASL/Disassembler: Added full support for the following new ACPI tables: |
| 1) The MTMR table (MID Timer Table) |
| 2) The VRTC table (Virtual Real Time Clock Table). |
| Includes header file, disassembler, table compiler, and template support |
| for both tables. |
| |
| iASL: Implemented compile-time validation of package objects returned by |
| predefined names. This new feature validates static package objects |
| returned by the various predefined names defined to return packages. Both |
| object types and package lengths are validated, for both parent packages |
| and sub-packages, if any. The code is similar in structure and behavior |
| to |
| the runtime repair mechanism within the AML interpreter and uses the |
| existing predefined name information table. Adds a new file, aslprepkg.c. |
| ACPICA BZ 938. |
| |
| iASL: Implemented auto-detection of binary ACPI tables for disassembly. |
| This feature detects a binary file with a valid ACPI table header and |
| invokes the disassembler automatically. Eliminates the need to |
| specifically invoke the disassembler with the -d option. ACPICA BZ 862. |
| |
| iASL/Disassembler: Added several warnings for the case where there are |
| unresolved control methods during the disassembly. This can potentially |
| cause errors when the output file is compiled, because the disassembler |
| assumes zero method arguments in these cases (it cannot determine the |
| actual number of arguments without resolution/definition of the method). |
| |
| Debugger: Added support to display all resources with a single command. |
| Invocation of the resources command with no arguments will now display |
| all |
| resources within the current namespace. |
| |
| AcpiHelp: Added descriptive text for each ACPICA exception code displayed |
| via the -e option. |
| |
| ---------------------------------------- |
| 17 January 2013. Summary of changes for version 20130117: |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to |
| return either 1 or 2 integers. Although the ACPI spec defines the \_Sx |
| objects to return a package containing one integer, most BIOS code |
| returns |
| two integers and the previous code reflects that. However, we also need |
| to |
| support BIOS code that actually implements to the ACPI spec, and this |
| change reflects this. |
| |
| Fixed two issues with the ACPI_DEBUG_PRINT macros: |
| 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for |
| C compilers that require this support. |
| 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since |
| ACPI_DEBUG is already used by many of the various hosts. |
| |
| Updated all ACPICA copyrights and signons to 2013. Added the 2013 |
| copyright to all module headers and signons, including the standard Linux |
| header. This affects virtually every file in the ACPICA core subsystem, |
| iASL compiler, all ACPICA utilities, and the test suites. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total |
| Debug Version: 182.2K Code, 74.9K Data, 257.1K Total |
| Current Release: |
| Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total |
| Debug Version: 182.3K Code, 75.0K Data, 257.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and |
| prevent a possible fault on some hosts. Some C libraries modify the arg |
| pointer parameter to vfprintf making it difficult to call it twice in the |
| AcpiOsVprintf function. Use a local buffer to workaround this issue. This |
| does not affect the Windows OSL since the Win C library does not modify |
| the arg pointer. Chao Guan, Bob Moore. |
| |
| iASL: Fixed a possible infinite loop when the maximum error count is |
| reached. If an output file other than the .AML file is specified (such as |
| a listing file), and the maximum number of errors is reached, do not |
| attempt to flush data to the output file(s) as the compiler is aborting. |
| This can cause an infinite loop as the max error count code essentially |
| keeps calling itself. |
| |
| iASL/Disassembler: Added an option (-in) to ignore NOOP |
| opcodes/operators. |
| Implemented for both the compiler and the disassembler. Often, the NOOP |
| opcode is used as padding for packages that are changed dynamically by |
| the |
| BIOS. When disassembled and recompiled, these NOOPs will cause syntax |
| errors. This option causes the disassembler to ignore all NOOP opcodes |
| (0xA3), and it also causes the compiler to ignore all ASL source code |
| NOOP |
| statements as well. |
| |
| Debugger: Enhanced the Sleep command to execute all sleep states. This |
| change allows Sleep to be invoked with no arguments and causes the |
| debugger to execute all of the sleep states, 0-5, automatically. |
| |
| ---------------------------------------- |
| 20 December 2012. Summary of changes for version 20121220: |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Implemented a new interface, AcpiWalkResourceBuffer. This interface is an |
| alternate entry point for AcpiWalkResources and improves the usability of |
| the resource manager by accepting as input a buffer containing the output |
| of either a _CRS, _PRS, or _AEI method. The key functionality is that the |
| input buffer is not deleted by this interface so that it can be used by |
| the host later. See the ACPICA reference for details. |
| |
| Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table |
| (DSDT version < 2). The constant will be truncated and this warning |
| reflects that behavior. |
| |
| Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, |
| ExtendedInterrupt, and GpioInt descriptors. This change adds support to |
| both get and set the new wake bit in these descriptors, separately from |
| the existing share bit. Reported by Aaron Lu. |
| |
| Interpreter: Fix Store() when an implicit conversion is not possible. For |
| example, in the cases such as a store of a string to an existing package |
| object, implement the store as a CopyObject(). This is a small departure |
| from the ACPI specification which states that the control method should |
| be |
| aborted in this case. However, the ASLTS suite depends on this behavior. |
| |
| Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT |
| macros: check if debug output is currently enabled as soon as possible to |
| minimize performance impact if debug is in fact not enabled. |
| |
| Source code restructuring: Cleanup to improve modularity. The following |
| new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, |
| psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. |
| Associated makefiles and project files have been updated. |
| |
| Changed an exception code for LoadTable operator. For the case where one |
| of the input strings is too long, change the returned exception code from |
| AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. |
| |
| Fixed a possible memory leak in dispatcher error path. On error, delete |
| the mutex object created during method mutex creation. Reported by |
| tim.gardner@canonical.com. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total |
| Debug Version: 175.5K Code, 74.5K Data, 250.0K Total |
| Current Release: |
| Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total |
| Debug Version: 182.2K Code, 74.9K Data, 257.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Disallow a method call as argument to the ObjectType ASL operator. |
| This change tracks an errata to the ACPI 5.0 document. The AML grammar |
| will not allow the interpreter to differentiate between a method and a |
| method invocation when these are used as an argument to the ObjectType |
| operator. The ACPI specification change is to disallow a method |
| invocation |
| (UserTerm) for the ObjectType operator. |
| |
| Finish support for the TPM2 and CSRT tables in the headers, table |
| compiler, and disassembler. |
| |
| Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout |
| always expires immediately if the semaphore is not available. The |
| original |
| code was using a relative-time timeout, but sem_timedwait requires the |
| use |
| of an absolute time. |
| |
| iASL: Added a remark if the Timer() operator is used within a 32-bit |
| table. This operator returns a 64-bit time value that will be truncated |
| within a 32-bit table. |
| |
| iASL Source code restructuring: Cleanup to improve modularity. The |
| following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, |
| aslmethod.c, and aslfileio.c. Associated makefiles and project files have |
| been updated. |
| |
| |
| ---------------------------------------- |
| 14 November 2012. Summary of changes for version 20121114: |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Implemented a performance enhancement for ACPI/AML Package objects. This |
| change greatly increases the performance of Package objects within the |
| interpreter. It changes the processing of reference counts for packages |
| by |
| optimizing for the most common case where the package sub-objects are |
| either Integers, Strings, or Buffers. Increases the overall performance |
| of |
| the ASLTS test suite by 1.5X (Increases the Slack Mode performance by |
| 2X.) |
| Chao Guan. ACPICA BZ 943. |
| |
| Implemented and deployed common macros to extract flag bits from resource |
| descriptors. Improves readability and maintainability of the code. Fixes |
| a |
| problem with the UART serial bus descriptor for the number of data bits |
| flags (was incorrectly 2 bits, should be 3). |
| |
| Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation |
| of the macros and changed the SETx macros to the style of (destination, |
| source). Also added ACPI_CASTx companion macros. Lv Zheng. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total |
| Debug Version: 175.5K Code, 74.5K Data, 250.0K Total |
| Current Release: |
| Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total |
| Debug Version: 175.5K Code, 74.5K Data, 250.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change |
| adds the ShareAndWake and ExclusiveAndWake flags which were added to the |
| Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. |
| |
| Disassembler: Fixed a problem with external declaration generation. Fixes |
| a problem where an incorrect pathname could be generated for an external |
| declaration if the original reference to the object includes leading |
| carats (^). ACPICA BZ 984. |
| |
| Debugger: Completed a major update for the Disassemble<method> command. |
| This command was out-of-date and did not properly disassemble control |
| methods that had any reasonable complexity. This fix brings the command |
| up |
| to the same level as the rest of the disassembler. Adds one new file, |
| dmdeferred.c, which is existing code that is now common with the main |
| disassembler and the debugger disassemble command. ACPICA MZ 978. |
| |
| iASL: Moved the parser entry prototype to avoid a duplicate declaration. |
| Newer versions of Bison emit this prototype, so moved the prototype out |
| of |
| the iASL header to where it is actually used in order to avoid a |
| duplicate |
| declaration. |
| |
| iASL/Tools: Standardized use of the stream I/O functions: |
| 1) Ensure check for I/O error after every fopen/fread/fwrite |
| 2) Ensure proper order of size/count arguments for fread/fwrite |
| 3) Use test of (Actual != Requested) after all fwrite, and most fread |
| 4) Standardize I/O error messages |
| Improves reliability and maintainability of the code. Bob Moore, Lv |
| Zheng. |
| ACPICA BZ 981. |
| |
| Disassembler: Prevent duplicate External() statements. During generation |
| of external statements, detect similar pathnames that are actually |
| duplicates such as these: |
| External (\ABCD) |
| External (ABCD) |
| Remove all leading '\' characters from pathnames during the external |
| statement generation so that duplicates will be detected and tossed. |
| ACPICA BZ 985. |
| |
| Tools: Replace low-level I/O with stream I/O functions. Replace |
| open/read/write/close with the stream I/O equivalents |
| fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob |
| Moore. |
| |
| AcpiBin: Fix for the dump-to-hex function. Now correctly output the table |
| name header so that AcpiXtract recognizes the output file/table. |
| |
| iASL: Remove obsolete -2 option flag. Originally intended to force the |
| compiler/disassembler into an ACPI 2.0 mode, this was never implemented |
| and the entire concept is now obsolete. |
| |
| ---------------------------------------- |
| 18 October 2012. Summary of changes for version 20121018: |
| |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Updated support for the ACPI 5.0 MPST table. Fixes some problems |
| introduced by late changes to the table as it was added to the ACPI 5.0 |
| specification. Includes header, disassembler, and data table compiler |
| support as well as a new version of the MPST template. |
| |
| AcpiGetObjectInfo: Enhanced the device object support to include the ACPI |
| 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID |
| methods: _HID, _CID, and _UID. |
| |
| Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed |
| ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent |
| name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) |
| names for their various drivers. Affects the AcpiGetObjectInfo external |
| interface, and other internal interfaces as well. |
| |
| Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. |
| This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME |
| on machines that support non-aligned transfers. Optimizes for this case |
| rather than using a strncpy. With assistance from Zheng Lv. |
| |
| Resource Manager: Small fix for buffer size calculation. Fixed a one byte |
| error in the output buffer calculation. Feng Tang. ACPICA BZ 849. |
| |
| Added a new debug print message for AML mutex objects that are force- |
| released. At control method termination, any currently acquired mutex |
| objects are force-released. Adds a new debug-only message for each one |
| that is released. |
| |
| Audited/updated all ACPICA return macros and the function debug depth |
| counter: 1) Ensure that all functions that use the various TRACE macros |
| also use the appropriate ACPICA return macros. 2) Ensure that all normal |
| return statements surround the return expression (value) with parens to |
| ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, |
| Zheng Lv, Bob Moore. ACPICA Bugzilla 972. |
| |
| Global source code changes/maintenance: All extra lines at the start and |
| end of each source file have been removed for consistency. Also, within |
| comments, all new sentences start with a single space instead of a double |
| space, again for consistency across the code base. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total |
| Debug Version: 175.0K Code, 74.4K Data, 249.4K Total |
| Current Release: |
| Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total |
| Debug Version: 175.5K Code, 74.5K Data, 250.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Improved the algorithm used for memory leak/corruption |
| detection. Added some intelligence to the code that maintains the global |
| list of allocated memory. The list is now ordered by allocated memory |
| address, significantly improving performance. When running AcpiExec on |
| the ASLTS test suite, speed improvements of 3X to 5X are seen, depending |
| on the platform and/or the environment. Note, this performance |
| enhancement affects the AcpiExec utility only, not the kernel-resident |
| ACPICA code. |
| |
| Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For |
| the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix |
| incorrect table offset reported for invalid opcodes. Report the original |
| 32-bit value for bad ACPI_NAMEs (as well as the repaired name.) |
| |
| Disassembler: Enhanced the -vt option to emit the binary table data in |
| hex format to assist with debugging. |
| |
| Fixed a potential filename buffer overflow in osunixdir.c. Increased the |
| size of file structure. Colin Ian King. |
| |
| ---------------------------------------- |
| 13 September 2012. Summary of changes for version 20120913: |
| |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| ACPI 5.0: Added two new notify types for the Hardware Error Notification |
| Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) |
| and |
| MCE(6). |
| |
| Table Manager: Merged/removed duplicate code in the root table resize |
| functions. One function is external, the other is internal. Lv Zheng, |
| ACPICA |
| BZ 846. |
| |
| Makefiles: Completely removed the obsolete "Linux" makefiles under |
| acpica/generate/linux. These makefiles are obsolete and have been |
| replaced |
| by |
| the generic unix makefiles under acpica/generate/unix. |
| |
| Makefiles: Ensure that binary files always copied properly. Minor rule |
| change |
| to ensure that the final binary output files are always copied up to the |
| appropriate binary directory (bin32 or bin64.) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total |
| Debug Version: 175.7K Code, 74.8K Data, 250.5K Total |
| Current Release: |
| Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total |
| Debug Version: 175.0K Code, 74.4K Data, 249.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a possible fault during the disassembly of resource |
| descriptors when a second parse is required because of the invocation of |
| external control methods within the table. With assistance from |
| adq@lidskialf.net. ACPICA BZ 976. |
| |
| iASL: Fixed a namepath optimization problem. An error can occur if the |
| parse |
| node that contains the namepath to be optimized does not have a parent |
| node |
| that is a named object. This change fixes the problem. |
| |
| iASL: Fixed a regression where the AML file is not deleted on errors. The |
| AML |
| output file should be deleted if there are any errors during the |
| compiler. |
| The |
| only exception is if the -f (force output) option is used. ACPICA BZ 974. |
| |
| iASL: Added a feature to automatically increase internal line buffer |
| sizes. |
| Via realloc(), automatically increase the internal line buffer sizes as |
| necessary to support very long source code lines. The current version of |
| the |
| preprocessor requires a buffer long enough to contain full source code |
| lines. |
| This change increases the line buffer(s) if the input lines go beyond the |
| current buffer size. This eliminates errors that occurred when a source |
| code |
| line was longer than the buffer. |
| |
| iASL: Fixed a problem with constant folding in method declarations. The |
| SyncLevel term is a ByteConstExpr, and incorrect code would be generated |
| if a |
| Type3 opcode was used. |
| |
| Debugger: Improved command help support. For incorrect argument count, |
| display |
| full help for the command. For help command itself, allow an argument to |
| specify a command. |
| |
| Test Suites: Several bug fixes for the ASLTS suite reduces the number of |
| errors during execution of the suite. Guan Chao. |
| |
| ---------------------------------------- |
| 16 August 2012. Summary of changes for version 20120816: |
| |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Removed all use of the deprecated _GTS and _BFS predefined methods. The |
| _GTS |
| (Going To Sleep) and _BFS (Back From Sleep) methods are essentially |
| deprecated and will probably be removed from the ACPI specification. |
| Windows |
| does not invoke them, and reportedly never will. The final nail in the |
| coffin |
| is that the ACPI specification states that these methods must be run with |
| interrupts off, which is not going to happen in a kernel interpreter. |
| Note: |
| Linux has removed all use of the methods also. It was discovered that |
| invoking these functions caused failures on some machines, probably |
| because |
| they were never tested since Windows does not call them. Affects two |
| external |
| interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. |
| ACPICA BZ 969. |
| |
| Implemented support for complex bit-packed buffers returned from the _PLD |
| (Physical Location of Device) predefined method. Adds a new external |
| interface, AcpiDecodePldBuffer that parses the buffer into a more usable |
| C |
| structure. Note: C Bitfields cannot be used for this type of predefined |
| structure since the memory layout of individual bitfields is not defined |
| by |
| the C language. In addition, there are endian concerns where a compiler |
| will |
| change the bitfield ordering based on the machine type. The new ACPICA |
| interface eliminates these issues, and should be called after _PLD is |
| executed. ACPICA BZ 954. |
| |
| Implemented a change to allow a scope change to root (via "Scope (\)") |
| during |
| execution of module-level ASL code (code that is executed at table load |
| time.) Lin Ming. |
| |
| Added the Windows8/Server2012 string for the _OSI method. This change |
| adds |
| a |
| new _OSI string, "Windows 2012" for both Windows 8 and Windows Server |
| 2012. |
| |
| Added header support for the new ACPI tables DBG2 (Debug Port Table Type |
| 2) |
| and CSRT (Core System Resource Table). |
| |
| Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined |
| names. This simplifies access to the buffers returned by these predefined |
| names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. |
| |
| GPE support: Removed an extraneous parameter from the various low-level |
| internal GPE functions. Tang Feng. |
| |
| Removed the linux makefiles from the unix packages. The generate/linux |
| makefiles are obsolete and have been removed from the unix tarball |
| release |
| packages. The replacement makefiles are under generate/unix, and there is |
| a |
| top-level makefile under the main acpica directory. ACPICA BZ 967, 912. |
| |
| Updates for Unix makefiles: |
| 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. |
| 2) Update linker flags (move to end of command line) for AcpiExec |
| utility. |
| Guan Chao. |
| |
| Split ACPICA initialization functions to new file, utxfinit.c. Split from |
| utxface.c to improve modularity and reduce file size. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total |
| Debug Version: 173.7K Code, 74.0K Data, 247.7K Total |
| Current Release: |
| Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total |
| Debug Version: 175.7K Code, 74.8K Data, 250.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem with constant folding for fixed-length constant |
| expressions. The constant-folding code was not being invoked for constant |
| expressions that allow the use of type 3/4/5 opcodes to generate |
| constants |
| for expressions such as ByteConstExpr, WordConstExpr, etc. This could |
| result |
| in the generation of invalid AML bytecode. ACPICA BZ 970. |
| |
| iASL: Fixed a generation issue on newer versions of Bison. Newer versions |
| apparently automatically emit some of the necessary externals. This |
| change |
| handles these versions in order to eliminate generation warnings. |
| |
| Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. |
| |
| Disassembler: Add support to decode _PLD buffers. The decoded buffer |
| appears |
| within comments in the output file. |
| |
| Debugger: Fixed a regression with the "Threads" command where |
| AE_BAD_PARAMETER was always returned. |
| |
| ---------------------------------------- |
| 11 July 2012. Summary of changes for version 20120711: |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Fixed a possible fault in the return package object repair code. Fixes a |
| problem that can occur when a lone package object is wrapped with an |
| outer |
| package object in order to force conformance to the ACPI specification. |
| Can |
| affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, |
| _DLM, |
| _CSD, _PSD, _TSD. |
| |
| Removed code to disable/enable bus master arbitration (ARB_DIS bit in the |
| PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the |
| ARB_DIS bit must be implemented in the host-dependent C3 processor power |
| state |
| support. Note, ARB_DIS is obsolete and only applies to older chipsets, |
| both |
| Intel and other vendors. (for Intel: ICH4-M and earlier) |
| |
| This change removes the code to disable/enable bus master arbitration |
| during |
| suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register |
| causes |
| resume problems on some machines. The change has been in use for over |
| seven |
| years within Linux. |
| |
| Implemented two new external interfaces to support host-directed dynamic |
| ACPI |
| table load and unload. They are intended to simplify the host |
| implementation |
| of hot-plug support: |
| AcpiLoadTable: Load an SSDT from a buffer into the namespace. |
| AcpiUnloadParentTable: Unload an SSDT via a named object owned by the |
| table. |
| See the ACPICA reference for additional details. Adds one new file, |
| components/tables/tbxfload.c |
| |
| Implemented and deployed two new interfaces for errors and warnings that |
| are |
| known to be caused by BIOS/firmware issues: |
| AcpiBiosError: Prints "ACPI Firmware Error" message. |
| AcpiBiosWarning: Prints "ACPI Firmware Warning" message. |
| Deployed these new interfaces in the ACPICA Table Manager code for ACPI |
| table |
| and FADT errors. Additional deployment to be completed as appropriate in |
| the |
| future. The associated conditional macros are ACPI_BIOS_ERROR and |
| ACPI_BIOS_WARNING. See the ACPICA reference for additional details. |
| ACPICA |
| BZ |
| 843. |
| |
| Implicit notify support: ensure that no memory allocation occurs within a |
| critical region. This fix moves a memory allocation outside of the time |
| that a |
| spinlock is held. Fixes issues on systems that do not allow this |
| behavior. |
| Jung-uk Kim. |
| |
| Split exception code utilities and tables into a new file, |
| utilities/utexcep.c |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total |
| Debug Version: 172.9K Code, 73.6K Data, 246.5K Total |
| Current Release: |
| Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total |
| Debug Version: 173.7K Code, 74.0K Data, 247.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead |
| of |
| 0. Jung-uk Kim. |
| |
| Debugger: Enhanced the "tables" command to emit additional information |
| about |
| the current set of ACPI tables, including the owner ID and flags decode. |
| |
| Debugger: Reimplemented the "unload" command to use the new |
| AcpiUnloadParentTable external interface. This command was disable |
| previously |
| due to need for an unload interface. |
| |
| AcpiHelp: Added a new option to decode ACPICA exception codes. The -e |
| option |
| will decode 16-bit hex status codes (ACPI_STATUS) to name strings. |
| |
| ---------------------------------------- |
| 20 June 2012. Summary of changes for version 20120620: |
| |
| |
| 1) ACPICA Kernel-resident Subsystem: |
| |
| Implemented support to expand the "implicit notify" feature to allow |
| multiple |
| devices to be notified by a single GPE. This feature automatically |
| generates a |
| runtime device notification in the absence of a BIOS-provided GPE control |
| method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit |
| notify is |
| provided by ACPICA for Windows compatibility, and is a workaround for |
| BIOS |
| AML |
| code errors. See the description of the AcpiSetupGpeForWake interface in |
| the |
| APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. |
| |
| Changed some comments and internal function names to simplify and ensure |
| correctness of the Linux code translation. No functional changes. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total |
| Debug Version: 172.7K Code, 73.6K Data, 246.3K Total |
| Current Release: |
| Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total |
| Debug Version: 172.9K Code, 73.6K Data, 246.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Added support to emit short, commented descriptions for the |
| ACPI |
| predefined names in order to improve the readability of the disassembled |
| output. ACPICA BZ 959. Changes include: |
| 1) Emit descriptions for all standard predefined names (_INI, _STA, |
| _PRW, |
| etc.) |
| 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) |
| 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, |
| etc.) |
| |
| AcpiSrc: Fixed several long-standing Linux code translation issues. |
| Argument |
| descriptions in function headers are now translated properly to lower |
| case |
| and |
| underscores. ACPICA BZ 961. Also fixes translation problems such as |
| these: |
| (old -> new) |
| i_aSL -> iASL |
| 00-7_f -> 00-7F |
| 16_k -> 16K |
| local_fADT -> local_FADT |
| execute_oSI -> execute_OSI |
| |
| iASL: Fixed a problem where null bytes were inadvertently emitted into |
| some |
| listing files. |
| |
| iASL: Added the existing debug options to the standard help screen. There |
| are |
| no longer two different help screens. ACPICA BZ 957. |
| |
| AcpiHelp: Fixed some typos in the various predefined name descriptions. |
| Also |
| expand some of the descriptions where appropriate. |
| |
| iASL: Fixed the -ot option (display compile times/statistics). Was not |
| working |
| properly for standard output; only worked for the debug file case. |
| |
| ---------------------------------------- |
| 18 May 2012. Summary of changes for version 20120518: |
| |
| |
| 1) ACPICA Core Subsystem: |
| |
| Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is |
| defined |
| to block until asynchronous events such as notifies and GPEs have |
| completed. |
| Within ACPICA, it is only called before a notify or GPE handler is |
| removed/uninstalled. It also may be useful for the host OS within related |
| drivers such as the Embedded Controller driver. See the ACPICA reference |
| for |
| additional information. ACPICA BZ 868. |
| |
| ACPI Tables: Added a new error message for a possible overflow failure |
| during |
| the conversion of FADT 32-bit legacy register addresses to internal |
| common |
| 64- |
| bit GAS structure representation. The GAS has a one-byte "bit length" |
| field, |
| thus limiting the register length to 255 bits. ACPICA BZ 953. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total |
| Debug Version: 172.6K Code, 73.4K Data, 246.0K Total |
| Current Release: |
| Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total |
| Debug Version: 172.7K Code, 73.6K Data, 246.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL |
| macro. |
| This keyword was added late in the ACPI 5.0 release cycle and was not |
| implemented until now. |
| |
| Disassembler: Added support for Operation Region externals. Adds missing |
| support for operation regions that are defined in another table, and |
| referenced locally via a Field or BankField ASL operator. Now generates |
| the |
| correct External statement. |
| |
| Disassembler: Several additional fixes for the External() statement |
| generation |
| related to some ASL operators. Also, order the External() statements |
| alphabetically in the disassembler output. Fixes the External() |
| generation |
| for |
| the Create* field, Alias, and Scope operators: |
| 1) Create* buffer field operators - fix type mismatch warning on |
| disassembly |
| 2) Alias - implement missing External support |
| 3) Scope - fix to make sure all necessary externals are emitted. |
| |
| iASL: Improved pathname support. For include files, merge the prefix |
| pathname |
| with the file pathname and eliminate unnecessary components. Convert |
| backslashes in all pathnames to forward slashes, for readability. Include |
| file |
| pathname changes affect both #include and Include() type operators. |
| |
| iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the |
| end |
| of a valid line by inserting a newline and then returning the EOF during |
| the |
| next call to GetNextLine. Prevents the line from being ignored due to EOF |
| condition. |
| |
| iASL: Implemented some changes to enhance the IDE support (-vi option.) |
| Error |
| and Warning messages are now correctly recognized for both the source |
| code |
| browser and the global error and warning counts. |
| |
| ---------------------------------------- |
| 20 April 2012. Summary of changes for version 20120420: |
| |
| |
| 1) ACPICA Core Subsystem: |
| |
| Implemented support for multiple notify handlers. This change adds |
| support |
| to |
| allow multiple system and device notify handlers on Device, Thermal Zone, |
| and |
| Processor objects. This can simplify the host OS notification |
| implementation. |
| Also re-worked and restructured the entire notify support code to |
| simplify |
| handler installation, handler removal, notify event queuing, and notify |
| dispatch to handler(s). Note: there can still only be two global notify |
| handlers - one for system notifies and one for device notifies. There are |
| no |
| changes to the existing handler install/remove interfaces. Lin Ming, Bob |
| Moore, Rafael Wysocki. |
| |
| Fixed a regression in the package repair code where the object reference |
| count was calculated incorrectly. Regression was introduced in the commit |
| "Support to add Package wrappers". |
| |
| Fixed a couple possible memory leaks in the AML parser, in the error |
| recovery |
| path. Jesper Juhl, Lin Ming. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total |
| Debug Version: 172.5K Code, 73.2K Data, 245.7K Total |
| Current Release: |
| Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total |
| Debug Version: 172.6K Code, 73.4K Data, 246.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem with the resource descriptor support where the |
| length |
| of the StartDependentFn and StartDependentFnNoPrio descriptors were not |
| included in cumulative descriptor offset, resulting in incorrect values |
| for |
| resource tags within resource descriptors appearing after a |
| StartDependent* |
| descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. |
| |
| iASL and Preprocessor: Implemented full support for the #line directive |
| to |
| correctly track original source file line numbers through the .i |
| preprocessor |
| output file - for error and warning messages. |
| |
| iASL: Expand the allowable byte constants for address space IDs. |
| Previously, |
| the allowable range was 0x80-0xFF (user-defined spaces), now the range is |
| 0x0A-0xFF to allow for custom and new IDs without changing the compiler. |
| |
| iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. |
| |
| iASL: Add option to completely disable the preprocessor (-Pn). |
| |
| iASL: Now emit all error/warning messages to standard error (stderr) by |
| default (instead of the previous stdout). |
| |
| ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). |
| Update |
| for resource descriptor offset fix above. Update/cleanup error output |
| routines. Enable and send iASL errors/warnings to an error logfile |
| (error.txt). Send all other iASL output to a logfile (compiler.txt). |
| Fixed |
| several extraneous "unrecognized operator" messages. |
| |
| ---------------------------------------- |
| 20 March 2012. Summary of changes for version 20120320: |
| |
| |
| 1) ACPICA Core Subsystem: |
| |
| Enhanced the sleep/wake interfaces to optionally execute the _GTS method |
| (Going To Sleep) and the _BFS method (Back From Sleep). Windows |
| apparently |
| does not execute these methods, and therefore these methods are often |
| untested. It has been seen on some systems where the execution of these |
| methods causes errors and also prevents the machine from entering S5. It |
| is |
| therefore suggested that host operating systems do not execute these |
| methods |
| by default. In the future, perhaps these methods can be optionally |
| executed |
| based on the age of the system and/or what is the newest version of |
| Windows |
| that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState |
| and |
| AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin |
| Ming. |
| |
| Fixed a problem where the length of the local/common FADT was set too |
| early. |
| The local FADT table length cannot be set to the common length until the |
| original length has been examined. There is code that checks the table |
| length |
| and sets various fields appropriately. This can affect older machines |
| with |
| early FADT versions. For example, this can cause inadvertent writes to |
| the |
| CST_CNT register. Julian Anastasov. |
| |
| Fixed a mapping issue related to a physical table override. Use the |
| deferred |
| mapping mechanism for tables loaded via the physical override OSL |
| interface. |
| This allows for early mapping before the virtual memory manager is |
| available. |
| Thomas Renninger, Bob Moore. |
| |
| Enhanced the automatic return-object repair code: Repair a common problem |
| with |
| predefined methods that are defined to return a variable-length Package |
| of |
| sub-objects. If there is only one sub-object, some BIOS ASL code |
| mistakenly |
| simply returns the single object instead of a Package with one sub- |
| object. |
| This new support will repair this error by wrapping a Package object |
| around |
| the original object, creating the correct and expected Package with one |
| sub- |
| object. Names that can be repaired in this manner include: _ALR, _CSD, |
| _HPX, |
| _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ |
| 939. |
| |
| Changed the exception code returned for invalid ACPI paths passed as |
| parameters to external interfaces such as AcpiEvaluateObject. Was |
| AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total |
| Debug Version: 172.5K Code, 73.2K Data, 245.7K Total |
| Current Release: |
| Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total |
| Debug Version: 172.5K Code, 73.2K Data, 245.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Added the infrastructure and initial implementation of a integrated |
| C- |
| like preprocessor. This will simplify BIOS development process by |
| eliminating |
| the need for a separate preprocessing step during builds. On Windows, it |
| also |
| eliminates the need to install a separate C compiler. ACPICA BZ 761. Some |
| features including full #define() macro support are still under |
| development. |
| These preprocessor directives are supported: |
| #define |
| #elif |
| #else |
| #endif |
| #error |
| #if |
| #ifdef |
| #ifndef |
| #include |
| #pragma message |
| #undef |
| #warning |
| In addition, these new command line options are supported: |
| -D <symbol> Define symbol for preprocessor use |
| -li Create preprocessed output file (*.i) |
| -P Preprocess only and create preprocessor output file (*.i) |
| |
| Table Compiler: Fixed a problem where the equals operator within an |
| expression |
| did not work properly. |
| |
| Updated iASL to use the current versions of Bison/Flex. Updated the |
| Windows |
| project file to invoke these tools from the standard location. ACPICA BZ |
| 904. |
| Versions supported: |
| Flex for Windows: V2.5.4 |
| Bison for Windows: V2.4.1 |
| |
| ---------------------------------------- |
| 15 February 2012. Summary of changes for version 20120215: |
| |
| |
| 1) ACPICA Core Subsystem: |
| |
| There have been some major changes to the sleep/wake support code, as |
| described below (a - e). |
| |
| a) The AcpiLeaveSleepState has been split into two interfaces, similar to |
| AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is |
| AcpiLeaveSleepStatePrep. This allows the host to perform actions between |
| the |
| time the _BFS method is called and the _WAK method is called. NOTE: all |
| hosts |
| must update their wake/resume code or else sleep/wake will not work |
| properly. |
| Rafael Wysocki. |
| |
| b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the |
| _WAK |
| method. Some machines require that the GPEs are enabled before the _WAK |
| method |
| is executed. Thomas Renninger. |
| |
| c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) |
| bit. |
| Some BIOS code assumes that WAK_STS will be cleared on resume and use it |
| to |
| determine whether the system is rebooting or resuming. Matthew Garrett. |
| |
| d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From |
| Sleep) to |
| match the ACPI specification requirement. Rafael Wysocki. |
| |
| e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl |
| registers within the V5 FADT. This support adds two new files: |
| hardware/hwesleep.c implements the support for the new registers. Moved |
| all |
| sleep/wake external interfaces to hardware/hwxfsleep.c. |
| |
| |
| Added a new OSL interface for ACPI table overrides, |
| AcpiOsPhysicalTableOverride. This interface allows the host to override a |
| table via a physical address, instead of the logical address required by |
| AcpiOsTableOverride. This simplifies the host implementation. Initial |
| implementation by Thomas Renninger. The ACPICA implementation creates a |
| single |
| shared function for table overrides that attempts both a logical and a |
| physical override. |
| |
| Expanded the OSL memory read/write interfaces to 64-bit data |
| (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory |
| transfer support for GAS register structures passed to AcpiRead and |
| AcpiWrite. |
| |
| Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a |
| custom |
| build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) |
| model. |
| See the ACPICA reference for details. ACPICA BZ 942. This option removes |
| about |
| 10% of the code and 5% of the static data, and the following hardware |
| ACPI |
| features become unavailable: |
| PM Event and Control registers |
| SCI interrupt (and handler) |
| Fixed Events |
| General Purpose Events (GPEs) |
| Global Lock |
| ACPI PM timer |
| FACS table (Waking vectors and Global Lock) |
| |
| Updated the unix tarball directory structure to match the ACPICA git |
| source |
| tree. This ensures that the generic unix makefiles work properly (in |
| generate/unix). Also updated the Linux makefiles to match. ACPICA BZ |
| 867. |
| |
| Updated the return value of the _REV predefined method to integer value 5 |
| to |
| reflect ACPI 5.0 support. |
| |
| Moved the external ACPI PM timer interface prototypes to the public |
| acpixf.h |
| file where they belong. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total |
| Debug Version: 171.7K Code, 72.9K Data, 244.5K Total |
| Current Release: |
| Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total |
| Debug Version: 172.5K Code, 73.2K Data, 245.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a problem with the new ACPI 5.0 serial resource |
| descriptors (I2C, SPI, UART) where the resource produce/consumer bit was |
| incorrectly displayed. |
| |
| AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI |
| specification. |
| |
| ---------------------------------------- |
| 11 January 2012. Summary of changes for version 20120111: |
| |
| |
| 1) ACPICA Core Subsystem: |
| |
| Implemented a new mechanism to allow host device drivers to check for |
| address |
| range conflicts with ACPI Operation Regions. Both SystemMemory and |
| SystemIO |
| address spaces are supported. A new external interface, |
| AcpiCheckAddressRange, |
| allows drivers to check an address range against the ACPI namespace. See |
| the |
| ACPICA reference for additional details. Adds one new file, |
| utilities/utaddress.c. Lin Ming, Bob Moore. |
| |
| Fixed several issues with the ACPI 5.0 FADT support: Add the sleep |
| Control |
| and |
| Status registers, update the ACPI 5.0 flags, and update internal data |
| structures to handle an FADT larger than 256 bytes. The size of the ACPI |
| 5.0 |
| FADT is 268 bytes. |
| |
| Updated all ACPICA copyrights and signons to 2012. Added the 2012 |
| copyright to |
| all module headers and signons, including the standard Linux header. This |
| affects virtually every file in the ACPICA core subsystem, iASL compiler, |
| and |
| all ACPICA utilities. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total |
| Debug Version: 170.8K Code, 72.6K Data, 243.4K Total |
| Current Release: |
| Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total |
| Debug Version: 171.7K Code, 72.9K Data, 244.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: fixed a problem with the automatic resource tag generation |
| support. Fixes a problem where the resource tags are inadvertently not |
| constructed if the table being disassembled contains external references |
| to |
| control methods. Moved the actual construction of the tags to after the |
| final |
| namespace is constructed (after 2nd parse is invoked due to external |
| control |
| method references.) ACPICA BZ 941. |
| |
| Table Compiler: Make all "generic" operators caseless. These are the |
| operators |
| like UINT8, String, etc. Making these caseless improves ease-of-use. |
| ACPICA BZ |
| 934. |
| |
| ---------------------------------------- |
| 23 November 2011. Summary of changes for version 20111123: |
| |
| 0) ACPI 5.0 Support: |
| |
| This release contains full support for the ACPI 5.0 specification, as |
| summarized below. |
| |
| Reduced Hardware Support: |
| ------------------------- |
| |
| This support allows for ACPI systems without the usual ACPI hardware. |
| This |
| support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA |
| will |
| not attempt to initialize or use any of the usual ACPI hardware. Note, |
| when |
| this flag is set, all of the following ACPI hardware is assumed to be not |
| present and is not initialized or accessed: |
| |
| General Purpose Events (GPEs) |
| Fixed Events (PM1a/PM1b and PM Control) |
| Power Management Timer and Console Buttons (power/sleep) |
| Real-time Clock Alarm |
| Global Lock |
| System Control Interrupt (SCI) |
| The FACS is assumed to be non-existent |
| |
| ACPI Tables: |
| ------------ |
| |
| All new tables and updates to existing tables are fully supported in the |
| ACPICA headers (for use by device drivers), the disassembler, and the |
| iASL |
| Data Table Compiler. ACPI 5.0 defines these new tables: |
| |
| BGRT /* Boot Graphics Resource Table */ |
| DRTM /* Dynamic Root of Trust for Measurement table */ |
| FPDT /* Firmware Performance Data Table */ |
| GTDT /* Generic Timer Description Table */ |
| MPST /* Memory Power State Table */ |
| PCCT /* Platform Communications Channel Table */ |
| PMTT /* Platform Memory Topology Table */ |
| RASF /* RAS Feature table */ |
| |
| Operation Regions/SpaceIDs: |
| --------------------------- |
| |
| All new operation regions are fully supported by the iASL compiler, the |
| disassembler, and the ACPICA runtime code (for dispatch to region |
| handlers.) |
| The new operation region Space IDs are: |
| |
| GeneralPurposeIo |
| GenericSerialBus |
| |
| Resource Descriptors: |
| --------------------- |
| |
| All new ASL resource descriptors are fully supported by the iASL |
| compiler, |
| the |
| ASL/AML disassembler, and the ACPICA runtime Resource Manager code |
| (including |
| all new predefined resource tags). New descriptors are: |
| |
| FixedDma |
| GpioIo |
| GpioInt |
| I2cSerialBus |
| SpiSerialBus |
| UartSerialBus |
| |
| ASL/AML Operators, New and Modified: |
| ------------------------------------ |
| |
| One new operator is added, the Connection operator, which is used to |
| associate |
| a GeneralPurposeIo or GenericSerialBus resource descriptor with |
| individual |
| field objects within an operation region. Several new protocols are |
| associated |
| with the AccessAs operator. All are fully supported by the iASL compiler, |
| disassembler, and runtime ACPICA AML interpreter: |
| |
| Connection // Declare Field Connection |
| attributes |
| AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol |
| AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes |
| Protocol |
| AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol |
| RawDataBuffer // Data type for Vendor Data |
| fields |
| |
| Predefined ASL/AML Objects: |
| --------------------------- |
| |
| All new predefined objects/control-methods are supported by the iASL |
| compiler |
| and the ACPICA runtime validation/repair (arguments and return values.) |
| New |
| predefined names include the following: |
| |
| Standard Predefined Names (Objects or Control Methods): |
| _AEI, _CLS, _CPC, _CWS, _DEP, |
| _DLM, _EVT, _GCP, _CRT, _GWS, |
| _HRV, _PRE, _PSE, _SRT, _SUB. |
| |
| Resource Tags (Names used to access individual fields within resource |
| descriptors): |
| _DBT, _DPL, _DRS, _END, _FLC, |
| _IOR, _LIN, _MOD, _PAR, _PHA, |
| _PIN, _PPI, _POL, _RXL, _SLV, |
| _SPE, _STB, _TXL, _VEN. |
| |
| ACPICA External Interfaces: |
| --------------------------- |
| |
| Several new interfaces have been defined for use by ACPI-related device |
| drivers and other host OS services: |
| |
| AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS |
| to |
| acquire and release AML mutexes that are defined in the DSDT/SSDT tables |
| provided by the BIOS. They are intended to be used in conjunction with |
| the |
| ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level |
| mutual exclusion with the AML code/interpreter. |
| |
| AcpiGetEventResources: Returns the (formatted) resource descriptors as |
| defined |
| by the ACPI 5.0 _AEI object (ACPI Event Information). This object |
| provides |
| resource descriptors associated with hardware-reduced platform events, |
| similar |
| to the AcpiGetCurrentResources interface. |
| |
| Operation Region Handlers: For General Purpose IO and Generic Serial Bus |
| operation regions, information about the Connection() object and any |
| optional |
| length information is passed to the region handler within the Context |
| parameter. |
| |
| AcpiBufferToResource: This interface converts a raw AML buffer containing |
| a |
| resource template or resource descriptor to the ACPI_RESOURCE internal |
| format |
| suitable for use by device drivers. Can be used by an operation region |
| handler |
| to convert the Connection() buffer object into a ACPI_RESOURCE. |
| |
| Miscellaneous/Tools/TestSuites: |
| ------------------------------- |
| |
| Support for extended _HID names (Four alpha characters instead of three). |
| Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. |
| Support for ACPI 5.0 features in the ASLTS test suite. |
| Fully updated documentation (ACPICA and iASL reference documents.) |
| |
| ACPI Table Definition Language: |
| ------------------------------- |
| |
| Support for this language was implemented and released as a subsystem of |
| the |
| iASL compiler in 2010. (See the iASL compiler User Guide.) |
| |
| |
| Non-ACPI 5.0 changes for this release: |
| -------------------------------------- |
| |
| 1) ACPICA Core Subsystem: |
| |
| Fix a problem with operation region declarations where a failure can |
| occur |
| if |
| the region name and an argument that evaluates to an object (such as the |
| region address) are in different namespace scopes. Lin Ming, ACPICA BZ |
| 937. |
| |
| Do not abort an ACPI table load if an invalid space ID is found within. |
| This |
| will be caught later if the offending method is executed. ACPICA BZ 925. |
| |
| Fixed an issue with the FFixedHW space ID where the ID was not always |
| recognized properly (Both ACPICA and iASL). ACPICA BZ 926. |
| |
| Fixed a problem with the 32-bit generation of the unix-specific OSL |
| (osunixxf.c). Lin Ming, ACPICA BZ 936. |
| |
| Several changes made to enable generation with the GCC 4.6 compiler. |
| ACPICA BZ |
| 935. |
| |
| New error messages: Unsupported I/O requests (not 8/16/32 bit), and |
| Index/Bank |
| field registers out-of-range. |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented the __PATH__ operator, which returns the full pathname |
| of |
| the current source file. |
| |
| AcpiHelp: Automatically display expanded keyword information for all ASL |
| operators. |
| |
| Debugger: Add "Template" command to disassemble/dump resource template |
| buffers. |
| |
| Added a new master script to generate and execute the ASLTS test suite. |
| Automatically handles 32- and 64-bit generation. See tests/aslts.sh |
| |
| iASL: Fix problem with listing generation during processing of the |
| Switch() |
| operator where AML listing was disabled until the entire Switch block was |
| completed. |
| |
| iASL: Improve support for semicolon statement terminators. Fix "invalid |
| character" message for some cases when the semicolon is used. Semicolons |
| are |
| now allowed after every <Term> grammar element. ACPICA BZ 927. |
| |
| iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ |
| 923. |
| |
| Disassembler: Fix problem with disassembly of the DataTableRegion |
| operator |
| where an inadvertent "Unhandled deferred opcode" message could be |
| generated. |
| |
| 3) Example Code and Data Size |
| |
| These are the sizes for the OS-independent acpica.lib produced by the |
| Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code |
| includes the debug output trace mechanism and has a much larger code and |
| data |
| size. |
| |
| Previous Release: |
| Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| Current Release: |
| Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total |
| Debug Version: 170.8K Code, 72.6K Data, 243.4K Total |
| |
| ---------------------------------------- |
| 22 September 2011. Summary of changes for version 20110922: |
| |
| 0) ACPI 5.0 News: |
| |
| Support for ACPI 5.0 in ACPICA has been underway for several months and |
| will |
| be released at the same time that ACPI 5.0 is officially released. |
| |
| The ACPI 5.0 specification is on track for release in the next few |
| months. |
| |
| 1) ACPICA Core Subsystem: |
| |
| Fixed a problem where the maximum sleep time for the Sleep() operator was |
| intended to be limited to two seconds, but was inadvertently limited to |
| 20 |
| seconds instead. |
| |
| Linux and Unix makefiles: Added header file dependencies to ensure |
| correct |
| generation of ACPICA core code and utilities. Also simplified the |
| makefiles |
| considerably through the use of the vpath variable to specify search |
| paths. |
| ACPICA BZ 924. |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented support to check the access length for all fields |
| created to |
| access named Resource Descriptor fields. For example, if a resource field |
| is |
| defined to be two bits, a warning is issued if a CreateXxxxField() is |
| used |
| with an incorrect bit length. This is implemented for all current |
| resource |
| descriptor names. ACPICA BZ 930. |
| |
| Disassembler: Fixed a byte ordering problem with the output of 24-bit and |
| 56- |
| bit integers. |
| |
| iASL: Fixed a couple of issues associated with variable-length package |
| objects. 1) properly handle constants like One, Ones, Zero -- do not make |
| a |
| VAR_PACKAGE when these are used as a package length. 2) Allow the |
| VAR_PACKAGE |
| opcode (in addition to PACKAGE) when validating object types for |
| predefined |
| names. |
| |
| iASL: Emit statistics for all output files (instead of just the ASL input |
| and |
| AML output). Includes listings, hex files, etc. |
| |
| iASL: Added -G option to the table compiler to allow the compilation of |
| custom |
| ACPI tables. The only part of a table that is required is the standard |
| 36- |
| byte |
| ACPI header. |
| |
| AcpiXtract: Ported to the standard ACPICA environment (with ACPICA |
| headers), |
| which also adds correct 64-bit support. Also, now all output filenames |
| are |
| completely lower case. |
| |
| AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when |
| loading table files. A warning is issued for any such tables. The only |
| exception is an FADT. This also fixes a possible fault when attempting to |
| load |
| non-AML tables. ACPICA BZ 932. |
| |
| AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where |
| a |
| missing table terminator could cause a fault when using the -p option. |
| |
| AcpiSrc: Fixed a possible divide-by-zero fault when generating file |
| statistics. |
| |
| 3) Example Code and Data Size |
| |
| These are the sizes for the OS-independent acpica.lib produced by the |
| Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code |
| includes the debug output trace mechanism and has a much larger code and |
| data |
| size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| |
| |
| ---------------------------------------- |
| 23 June 2011. Summary of changes for version 20110623: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Updated the predefined name repair mechanism to not attempt repair of a |
| _TSS |
| return object if a _PSS object is present. We can only sort the _TSS |
| return |
| package if there is no _PSS within the same scope. This is because if |
| _PSS |
| is |
| present, the ACPI specification dictates that the _TSS Power Dissipation |
| field |
| is to be ignored, and therefore some BIOSs leave garbage values in the |
| _TSS |
| Power field(s). In this case, it is best to just return the _TSS package |
| as- |
| is. Reported by, and fixed with assistance from Fenghua Yu. |
| |
| Added an option to globally disable the control method return value |
| validation |
| and repair. This runtime option can be used to disable return value |
| repair |
| if |
| this is causing a problem on a particular machine. Also added an option |
| to |
| AcpiExec (-dr) to set this disable flag. |
| |
| All makefiles and project files: Major changes to improve generation of |
| ACPICA |
| tools. ACPICA BZ 912: |
| Reduce default optimization levels to improve compatibility |
| For Linux, add strict-aliasing=0 for gcc 4 |
| Cleanup and simplify use of command line defines |
| Cleanup multithread library support |
| Improve usage messages |
| |
| Linux-specific header: update handling of THREAD_ID and pthread. For the |
| 32- |
| bit case, improve casting to eliminate possible warnings, especially with |
| the |
| acpica tools. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| With this release, a new utility named "acpihelp" has been added to the |
| ACPICA |
| package. This utility summarizes the ACPI specification chapters for the |
| ASL |
| and AML languages. It generates under Linux/Unix as well as Windows, and |
| provides the following functionality: |
| Find/display ASL operator(s) -- with description and syntax. |
| Find/display ASL keyword(s) -- with exact spelling and descriptions. |
| Find/display ACPI predefined name(s) -- with description, number |
| of arguments, and the return value data type. |
| Find/display AML opcode name(s) -- with opcode, arguments, and |
| grammar. |
| Decode/display AML opcode -- with opcode name, arguments, and |
| grammar. |
| |
| Service Layers: Make multi-thread support configurable. Conditionally |
| compile |
| the multi-thread support so that threading libraries will not be linked |
| if |
| not |
| necessary. The only tool that requires multi-thread support is AcpiExec. |
| |
| iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions |
| of |
| Bison appear to want the interface to yyerror to be a const char * (or at |
| least this is a problem when generating iASL on some systems.) ACPICA BZ |
| 923 |
| Pierre Lejeune. |
| |
| Tools: Fix for systems where O_BINARY is not defined. Only used for |
| Windows |
| versions of the tools. |
| |
| ---------------------------------------- |
| 27 May 2011. Summary of changes for version 20110527: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| ASL Load() operator: Reinstate most restrictions on the incoming ACPI |
| table |
| signature. Now, only allow SSDT, OEMx, and a null signature. History: |
| 1) Originally, we checked the table signature for "SSDT" or "PSDT". |
| (PSDT is now obsolete.) |
| 2) We added support for OEMx tables, signature "OEM" plus a fourth |
| "don't care" character. |
| 3) Valid tables were encountered with a null signature, so we just |
| gave up on validating the signature, (05/2008). |
| 4) We encountered non-AML tables such as the MADT, which caused |
| interpreter errors and kernel faults. So now, we once again allow |
| only SSDT, OEMx, and now, also a null signature. (05/2011). |
| |
| Added the missing _TDL predefined name to the global name list in order |
| to |
| enable validation. Affects both the core ACPICA code and the iASL |
| compiler. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug |
| version of the code includes the debug output trace mechanism and has a |
| much |
| larger code and data size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total |
| Debug Version: 164.5K Code, 68.0K Data, 232.5K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total |
| Debug Version: 165.6K Code, 68.4K Data, 234.0K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Debugger/AcpiExec: Implemented support for "complex" method arguments on |
| the |
| debugger command line. This adds support beyond simple integers -- |
| including |
| Strings, Buffers, and Packages. Includes support for nested packages. |
| Increased the default command line buffer size to accommodate these |
| arguments. |
| See the ACPICA reference for details and syntax. ACPICA BZ 917. |
| |
| Debugger/AcpiExec: Implemented support for "default" method arguments for |
| the |
| Execute/Debug command. Now, the debugger will always invoke a control |
| method |
| with the required number of arguments -- even if the command line |
| specifies |
| none or insufficient arguments. It uses default integer values for any |
| missing |
| arguments. Also fixes a bug where only six method arguments maximum were |
| supported instead of the required seven. |
| |
| Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine |
| and |
| also return status in order to prevent buffer overruns. See the ACPICA |
| reference for details and syntax. ACPICA BZ 921 |
| |
| iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and |
| makefiles to simplify support for the two different but similar parser |
| generators, bison and yacc. |
| |
| Updated the generic unix makefile for gcc 4. The default gcc version is |
| now |
| expected to be 4 or greater, since options specific to gcc 4 are used. |
| |
| ---------------------------------------- |
| 13 April 2011. Summary of changes for version 20110413: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support to execute a so-called "orphan" _REG method under the |
| EC |
| device. This change will force the execution of a _REG method underneath |
| the |
| EC |
| device even if there is no corresponding operation region of type |
| EmbeddedControl. Fixes a problem seen on some machines and apparently is |
| compatible with Windows behavior. ACPICA BZ 875. |
| |
| Added more predefined methods that are eligible for automatic NULL |
| package |
| element removal. This change adds another group of predefined names to |
| the |
| list |
| of names that can be repaired by having NULL package elements dynamically |
| removed. This group are those methods that return a single variable- |
| length |
| package containing simple data types such as integers, buffers, strings. |
| This |
| includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, |
| _PSL, |
| _Sx, |
| and _TZD. ACPICA BZ 914. |
| |
| Split and segregated all internal global lock functions to a new file, |
| evglock.c. |
| |
| Updated internal address SpaceID for DataTable regions. Moved this |
| internal |
| space |
| id in preparation for ACPI 5.0 changes that will include some new space |
| IDs. |
| This |
| change should not affect user/host code. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib |
| produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug |
| version of |
| the code includes the debug output trace mechanism and has a much larger |
| code |
| and |
| data size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total |
| Debug Version: 164.2K Code, 67.9K Data, 232.1K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total |
| Debug Version: 164.5K Code, 68.0K Data, 232.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/DTC: Major update for new grammar features. Allow generic data types |
| in |
| custom ACPI tables. Field names are now optional. Any line can be split |
| to |
| multiple lines using the continuation char (\). Large buffers now use |
| line- |
| continuation character(s) and no colon on the continuation lines. See the |
| grammar |
| update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob |
| Moore. |
| |
| iASL: Mark ASL "Return()" and the simple "Return" as "Null" return |
| statements. |
| Since the parser stuffs a "zero" as the return value for these statements |
| (due |
| to |
| the underlying AML grammar), they were seen as "return with value" by the |
| iASL |
| semantic checking. They are now seen correctly as "null" return |
| statements. |
| |
| iASL: Check if a_REG declaration has a corresponding Operation Region. |
| Adds a |
| check for each _REG to ensure that there is in fact a corresponding |
| operation |
| region declaration in the same scope. If not, the _REG method is not very |
| useful |
| since it probably won't be executed. ACPICA BZ 915. |
| |
| iASL/DTC: Finish support for expression evaluation. Added a new |
| expression |
| parser |
| that implements c-style operator precedence and parenthesization. ACPICA |
| bugzilla |
| 908. |
| |
| Disassembler/DTC: Remove support for () and <> style comments in data |
| tables. |
| Now |
| that DTC has full expression support, we don't want to have comment |
| strings |
| that |
| start with a parentheses or a less-than symbol. Now, only the standard /* |
| and |
| // |
| comments are supported, as well as the bracket [] comments. |
| |
| AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have |
| "unusual" |
| headers in the acpidump file. Update the header validation to support |
| these |
| tables. Problem introduced in previous AcpiXtract version in the change |
| to |
| support "wrong checksum" error messages emitted by acpidump utility. |
| |
| iASL: Add a * option to generate all template files (as a synonym for |
| ALL) |
| as |
| in |
| "iasl -T *" or "iasl -T ALL". |
| |
| iASL/DTC: Do not abort compiler on fatal errors. We do not want to |
| completely |
| abort the compiler on "fatal" errors, simply should abort the current |
| compile. |
| This allows multiple compiles with a single (possibly wildcard) compiler |
| invocation. |
| |
| ---------------------------------------- |
| 16 March 2011. Summary of changes for version 20110316: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem caused by a _PRW method appearing at the namespace root |
| scope |
| during the setup of wake GPEs. A fault could occur if a _PRW directly |
| under |
| the |
| root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. |
| |
| Implemented support for "spurious" Global Lock interrupts. On some |
| systems, a |
| global lock interrupt can occur without the pending flag being set. Upon |
| a |
| GL |
| interrupt, we now ensure that a thread is actually waiting for the lock |
| before |
| signaling GL availability. Rafael Wysocki, Bob Moore. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib |
| produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug |
| version of |
| the code includes the debug output trace mechanism and has a much larger |
| code |
| and |
| data size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total |
| Debug Version: 163.9K Code, 67.5K Data, 231.4K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total |
| Debug Version: 164.2K Code, 67.9K Data, 232.1K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented full support for the "SLIC" ACPI table. Includes support in |
| the |
| header files, disassembler, table compiler, and template generator. Bob |
| Moore, |
| Lin Ming. |
| |
| AcpiXtract: Correctly handle embedded comments and messages from |
| AcpiDump. |
| Apparently some or all versions of acpidump will occasionally emit a |
| comment |
| like |
| "Wrong checksum", etc., into the dump file. This was causing problems for |
| AcpiXtract. ACPICA BZ 905. |
| |
| iASL: Fix the Linux makefile by removing an inadvertent double file |
| inclusion. |
| ACPICA BZ 913. |
| |
| AcpiExec: Update installation of operation region handlers. Install one |
| handler |
| for a user-defined address space. This is used by the ASL test suite |
| (ASLTS). |
| |
| ---------------------------------------- |
| 11 February 2011. Summary of changes for version 20110211: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added a mechanism to defer _REG methods for some early-installed |
| handlers. |
| Most user handlers should be installed before call to |
| AcpiEnableSubsystem. |
| However, Event handlers and region handlers should be installed after |
| AcpiInitializeObjects. Override handlers for the "default" regions should |
| be |
| installed early, however. This change executes all _REG methods for the |
| default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any |
| chicken/egg issues between them. ACPICA BZ 848. |
| |
| Implemented an optimization for GPE detection. This optimization will |
| simply |
| ignore GPE registers that contain no enabled GPEs -- there is no need to |
| read the register since this information is available internally. This |
| becomes more important on machines with a large GPE space. ACPICA |
| bugzilla |
| 884. Lin Ming. Suggestion from Joe Liu. |
| |
| Removed all use of the highly unreliable FADT revision field. The |
| revision |
| number in the FADT has been found to be completely unreliable and cannot |
| be |
| trusted. Only the actual table length can be used to infer the version. |
| This |
| change updates the ACPICA core and the disassembler so that both no |
| longer |
| even look at the FADT version and instead depend solely upon the FADT |
| length. |
| |
| Fix an unresolved name issue for the no-debug and no-error-message source |
| generation cases. The _AcpiModuleName was left undefined in these cases, |
| but |
| it is actually needed as a parameter to some interfaces. Define |
| _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. |
| |
| Split several large files (makefiles and project files updated) |
| utglobal.c -> utdecode.c |
| dbcomds.c -> dbmethod.c dbnames.c |
| dsopcode.c -> dsargs.c dscontrol.c |
| dsload.c -> dsload2.c |
| aslanalyze.c -> aslbtypes.c aslwalks.c |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release (VC 9.0): |
| Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total |
| Debug Version: 163.9K Code, 67.5K Data, 231.4K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total |
| Debug Version: 163.9K Code, 67.5K Data, 231.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. |
| These are useful C-style macros with the standard definitions. ACPICA |
| bugzilla 898. |
| |
| iASL/DTC: Added support for integer expressions and labels. Support for |
| full |
| expressions for all integer fields in all ACPI tables. Support for labels |
| in |
| "generic" portions of tables such as UEFI. See the iASL reference manual. |
| |
| Debugger: Added a command to display the status of global handlers. The |
| "handlers" command will display op region, fixed event, and miscellaneous |
| global handlers. installation status -- and for op regions, whether |
| default |
| or user-installed handler will be used. |
| |
| iASL: Warn if reserved method incorrectly returns a value. Many |
| predefined |
| names are defined such that they do not return a value. If implemented as |
| a |
| method, issue a warning if such a name explicitly returns a value. ACPICA |
| Bugzilla 855. |
| |
| iASL: Added detection of GPE method name conflicts. Detects a conflict |
| where |
| there are two GPE methods of the form _Lxy and _Exy in the same scope. |
| (For |
| example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. |
| |
| iASL/DTC: Fixed a couple input scanner issues with comments and line |
| numbers. Comment remover could get confused and miss a comment ending. |
| Fixed |
| a problem with line counter maintenance. |
| |
| iASL/DTC: Reduced the severity of some errors from fatal to error. There |
| is |
| no need to abort on simple errors within a field definition. |
| |
| Debugger: Simplified the output of the help command. All help output now |
| in |
| a single screen, instead of help subcommands. ACPICA Bugzilla 897. |
| |
| ---------------------------------------- |
| 12 January 2011. Summary of changes for version 20110112: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a race condition between method execution and namespace walks that |
| can |
| possibly cause a fault. The problem was apparently introduced in version |
| 20100528 as a result of a performance optimization that reduces the |
| number |
| of |
| namespace walks upon method exit by using the delete_namespace_subtree |
| function instead of the delete_namespace_by_owner function used |
| previously. |
| Bug is a missing namespace lock in the delete_namespace_subtree function. |
| dana.myers@oracle.com |
| |
| Fixed several issues and a possible fault with the automatic "serialized" |
| method support. History: This support changes a method to "serialized" on |
| the |
| fly if the method generates an AE_ALREADY_EXISTS error, indicating the |
| possibility that it cannot handle reentrancy. This fix repairs a couple |
| of |
| issues seen in the field, especially on machines with many cores: |
| |
| 1) Delete method children only upon the exit of the last thread, |
| so as to not delete objects out from under other running threads |
| (and possibly causing a fault.) |
| 2) Set the "serialized" bit for the method only upon the exit of the |
| Last thread, so as to not cause deadlock when running threads |
| attempt to exit. |
| 3) Cleanup the use of the AML "MethodFlags" and internal method flags |
| so that there is no longer any confusion between the two. |
| |
| Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. |
| |
| Debugger: Now lock the namespace for duration of a namespace dump. |
| Prevents |
| issues if the namespace is changing dynamically underneath the debugger. |
| Especially affects temporary namespace nodes, since the debugger displays |
| these also. |
| |
| Updated the ordering of include files. The ACPICA headers should appear |
| before any compiler-specific headers (stdio.h, etc.) so that acenv.h can |
| set |
| any necessary compiler-specific defines, etc. Affects the ACPI-related |
| tools |
| and utilities. |
| |
| Updated all ACPICA copyrights and signons to 2011. Added the 2011 |
| copyright |
| to all module headers and signons, including the Linux header. This |
| affects |
| virtually every file in the ACPICA core subsystem, iASL compiler, and all |
| utilities. |
| |
| Added project files for MS Visual Studio 2008 (VC++ 9.0). The original |
| project files for VC++ 6.0 are now obsolete. New project files can be |
| found |
| under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for |
| details. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release (VC 6.0): |
| Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total |
| Debug Version: 166.6K Code, 52.1K Data, 218.7K Total |
| Current Release (VC 9.0): |
| Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total |
| Debug Version: 163.9K Code, 67.5K Data, 231.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Added generic data types to the Data Table compiler. Add "generic" |
| data |
| types such as UINT32, String, Unicode, etc., to simplify the generation |
| of |
| platform-defined tables such as UEFI. Lin Ming. |
| |
| iASL: Added listing support for the Data Table Compiler. Adds listing |
| support |
| (-l) to display actual binary output for each line of input code. |
| |
| ---------------------------------------- |
| 09 December 2010. Summary of changes for version 20101209: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed the major overhaul of the GPE support code that was begun in |
| July |
| 2010. Major features include: removal of _PRW execution in ACPICA (host |
| executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, |
| changes to existing interfaces, simplification of GPE handler operation, |
| and |
| a handful of new interfaces: |
| |
| AcpiUpdateAllGpes |
| AcpiFinishGpe |
| AcpiSetupGpeForWake |
| AcpiSetGpeWakeMask |
| One new file, evxfgpe.c to consolidate all external GPE interfaces. |
| |
| See the ACPICA Programmer Reference for full details and programming |
| information. See the new section 4.4 "General Purpose Event (GPE) |
| Support" |
| for a full overview, and section 8.7 "ACPI General Purpose Event |
| Management" |
| for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin |
| Ming, |
| Bob Moore, Rafael Wysocki. |
| |
| Implemented a new GPE feature for Windows compatibility, the "Implicit |
| Wake |
| GPE Notify". This feature will automatically issue a Notify(2) on a |
| device |
| when a Wake GPE is received if there is no corresponding GPE method or |
| handler. ACPICA BZ 870. |
| |
| Fixed a problem with the Scope() operator during table parse and load |
| phase. |
| During load phase (table load or method execution), the scope operator |
| should |
| not enter the target into the namespace. Instead, it should open a new |
| scope |
| at the target location. Linux BZ 19462, ACPICA BZ 882. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total |
| Debug Version: 166.6K Code, 52.1K Data, 218.7K Total |
| Current Release: |
| Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total |
| Debug Version: 166.3K Code, 52.1K Data, 218.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Relax the alphanumeric restriction on _CID strings. These strings |
| are |
| "bus-specific" per the ACPI specification, and therefore any characters |
| are |
| acceptable. The only checks that can be performed are for a null string |
| and |
| perhaps for a leading asterisk. ACPICA BZ 886. |
| |
| iASL: Fixed a problem where a syntax error that caused a premature EOF |
| condition on the source file emitted a very confusing error message. The |
| premature EOF is now detected correctly. ACPICA BZ 891. |
| |
| Disassembler: Decode the AccessSize within a Generic Address Structure |
| (byte |
| access, word access, etc.) Note, this field does not allow arbitrary bit |
| access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. |
| |
| New: AcpiNames utility - Example namespace dump utility. Shows an example |
| of |
| ACPICA configuration for a minimal namespace dump utility. Uses table and |
| namespace managers, but no AML interpreter. Does not add any |
| functionality |
| over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to |
| partition and configure ACPICA. ACPICA BZ 883. |
| |
| AML Debugger: Increased the debugger buffer size for method return |
| objects. |
| Was 4K, increased to 16K. Also enhanced error messages for debugger |
| method |
| execution, including the buffer overflow case. |
| |
| ---------------------------------------- |
| 13 October 2010. Summary of changes for version 20101013: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, |
| now |
| clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via |
| HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. |
| |
| Changed the type of the predefined namespace object _TZ from ThermalZone |
| to |
| Device. This was found to be confusing to the host software that |
| processes |
| the various thermal zones, since _TZ is not really a ThermalZone. |
| However, |
| a |
| Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui |
| Zhang. |
| |
| Added Windows Vista SP2 to the list of supported _OSI strings. The actual |
| string is "Windows 2006 SP2". |
| |
| Eliminated duplicate code in AcpiUtExecute* functions. Now that the |
| nsrepair |
| code automatically repairs _HID-related strings, this type of code is no |
| longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ |
| 878. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total |
| Debug Version: 166.3K Code, 52.1K Data, 218.4K Total |
| Current Release: |
| Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total |
| Debug Version: 166.3K Code, 52.1K Data, 218.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented additional compile-time validation for _HID strings. |
| The |
| non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the |
| length |
| of |
| the string must be exactly seven or eight characters. For both _HID and |
| _CID |
| strings, all characters must be alphanumeric. ACPICA BZ 874. |
| |
| iASL: Allow certain "null" resource descriptors. Some BIOS code creates |
| descriptors that are mostly or all zeros, with the expectation that they |
| will |
| be filled in at runtime. iASL now allows this as long as there is a |
| "resource |
| tag" (name) associated with the descriptor, which gives the ASL a handle |
| needed to modify the descriptor. ACPICA BZ 873. |
| |
| Added single-thread support to the generic Unix application OSL. |
| Primarily |
| for iASL support, this change removes the use of semaphores in the |
| single- |
| threaded ACPICA tools/applications - increasing performance. The |
| _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED |
| option. ACPICA BZ 879. |
| |
| AcpiExec: several fixes for the 64-bit version. Adds XSDT support and |
| support |
| for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. |
| |
| iASL: Moved all compiler messages to a new file, aslmessages.h. |
| |
| ---------------------------------------- |
| 15 September 2010. Summary of changes for version 20100915: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Removed the AcpiOsDerivePciId OSL interface. The various host |
| implementations |
| of this function were not OS-dependent and are now obsolete and can be |
| removed from all host OSLs. This function has been replaced by |
| AcpiHwDerivePciId, which is now part of the ACPICA core code. |
| AcpiHwDerivePciId has been implemented without recursion. Adds one new |
| module, hwpci.c. ACPICA BZ 857. |
| |
| Implemented a dynamic repair for _HID and _CID strings. The following |
| problems are now repaired at runtime: 1) Remove a leading asterisk in the |
| string, and 2) the entire string is uppercased. Both repairs are in |
| accordance with the ACPI specification and will simplify host driver |
| code. |
| ACPICA BZ 871. |
| |
| The ACPI_THREAD_ID type is no longer configurable, internally it is now |
| always UINT64. This simplifies the ACPICA code, especially any printf |
| output. |
| UINT64 is the only common data type for all thread_id types across all |
| operating systems. It is now up to the host OSL to cast the native |
| thread_id |
| type to UINT64 before returning the value to ACPICA (via |
| AcpiOsGetThreadId). |
| Lin Ming, Bob Moore. |
| |
| Added the ACPI_INLINE type to enhance the ACPICA configuration. The |
| "inline" |
| keyword is not standard across compilers, and this type allows inline to |
| be |
| configured on a per-compiler basis. Lin Ming. |
| |
| Made the system global AcpiGbl_SystemAwakeAndRunning publicly |
| available. |
| Added an extern for this boolean in acpixf.h. Some hosts utilize this |
| value |
| during suspend/restore operations. ACPICA BZ 869. |
| |
| All code that implements error/warning messages with the "ACPI:" prefix |
| has |
| been moved to a new module, utxferror.c. |
| |
| The UINT64_OVERLAY was moved to utmath.c, which is the only module where |
| it |
| is used. ACPICA BZ 829. Lin Ming, Bob Moore. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total |
| Debug Version: 165.1K Code, 51.9K Data, 217.0K Total |
| Current Release: |
| Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total |
| Debug Version: 166.3K Code, 52.1K Data, 218.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: Write ACPI errors to stderr instead of the output |
| file. |
| This keeps the output files free of random error messages that may |
| originate |
| from within the namespace/interpreter code. Used this opportunity to |
| merge |
| all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ |
| 866. Lin Ming, Bob Moore. |
| |
| Tools: update some printfs for ansi warnings on size_t. Handle width |
| change |
| of size_t on 32-bit versus 64-bit generations. Lin Ming. |
| |
| ---------------------------------------- |
| 06 August 2010. Summary of changes for version 20100806: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Designed and implemented a new host interface to the _OSI support code. |
| This |
| will allow the host to dynamically add or remove multiple _OSI strings, |
| as |
| well as install an optional handler that is called for each _OSI |
| invocation. |
| Also added a new AML debugger command, 'osi' to display and modify the |
| global |
| _OSI string table, and test support in the AcpiExec utility. See the |
| ACPICA |
| reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. |
| New Functions: |
| AcpiInstallInterface - Add an _OSI string. |
| AcpiRemoveInterface - Delete an _OSI string. |
| AcpiInstallInterfaceHandler - Install optional _OSI handler. |
| Obsolete Functions: |
| AcpiOsValidateInterface - no longer used. |
| New Files: |
| source/components/utilities/utosi.c |
| |
| Re-introduced the support to enable multi-byte transfers for Embedded |
| Controller (EC) operation regions. A reported problem was found to be a |
| bug |
| in the host OS, not in the multi-byte support. Previously, the maximum |
| data |
| size passed to the EC operation region handler was a single byte. There |
| are |
| often EC Fields larger than one byte that need to be transferred, and it |
| is |
| useful for the EC driver to lock these as a single transaction. This |
| change |
| enables single transfers larger than 8 bits. This effectively changes the |
| access to the EC space from ByteAcc to AnyAcc, and will probably require |
| changes to the host OS Embedded Controller driver to enable 16/32/64/256- |
| bit |
| transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. |
| |
| Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The |
| prototype in acpiosxf.h had the output value pointer as a (void *). |
| It should be a (UINT64 *). This may affect some host OSL code. |
| |
| Fixed a couple problems with the recently modified Linux makefiles for |
| iASL |
| and AcpiExec. These new makefiles place the generated object files in the |
| local directory so that there can be no collisions between the files that |
| are |
| shared between them that are compiled with different options. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total |
| Debug Version: 164.0K Code, 51.5K Data, 215.5K Total |
| Current Release: |
| Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total |
| Debug Version: 165.1K Code, 51.9K Data, 217.0K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL/Disassembler: Added a new option (-da, "disassemble all") to load |
| the |
| namespace from and disassemble an entire group of AML files. Useful for |
| loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) |
| and |
| disassembling with one simple command. ACPICA BZ 865. Lin Ming. |
| |
| iASL: Allow multiple invocations of -e option. This change allows |
| multiple |
| uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ |
| 834. |
| Lin Ming. |
| |
| ---------------------------------------- |
| 02 July 2010. Summary of changes for version 20100702: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented several updates to the recently added GPE reference count |
| support. The model for "wake" GPEs is changing to give the host OS |
| complete |
| control of these GPEs. Eventually, the ACPICA core will not execute any |
| _PRW |
| methods, since the host already must execute them. Also, additional |
| changes |
| were made to help ensure that the reference counts are kept in proper |
| synchronization with reality. Rafael J. Wysocki. |
| |
| 1) Ensure that GPEs are not enabled twice during initialization. |
| 2) Ensure that GPE enable masks stay in sync with the reference count. |
| 3) Do not inadvertently enable GPEs when writing GPE registers. |
| 4) Remove the internal wake reference counter and add new AcpiGpeWakeup |
| interface. This interface will set or clear individual GPEs for wakeup. |
| 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These |
| interfaces |
| are now used for "runtime" GPEs only. |
| |
| Changed the behavior of the GPE install/remove handler interfaces. The |
| GPE |
| is |
| no longer disabled during this process, as it was found to cause problems |
| on |
| some machines. Rafael J. Wysocki. |
| |
| Reverted a change introduced in version 20100528 to enable Embedded |
| Controller multi-byte transfers. This change was found to cause problems |
| with |
| Index Fields and possibly Bank Fields. It will be reintroduced when these |
| problems have been resolved. |
| |
| Fixed a problem with references to Alias objects within Package Objects. |
| A |
| reference to an Alias within the definition of a Package was not always |
| resolved properly. Aliases to objects like Processors, Thermal zones, |
| etc. |
| were resolved to the actual object instead of a reference to the object |
| as |
| it |
| should be. Package objects are only allowed to contain integer, string, |
| buffer, package, and reference objects. Redhat bugzilla 608648. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total |
| Debug Version: 164.1K Code, 51.5K Data, 215.6K Total |
| Current Release: |
| Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total |
| Debug Version: 164.0K Code, 51.5K Data, 215.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented a new compiler subsystem to allow definition and |
| compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. |
| These |
| are called "ACPI Data Tables", and the new compiler is the "Data Table |
| Compiler". This compiler is intended to simplify the existing error-prone |
| process of creating these tables for the BIOS, as well as allowing the |
| disassembly, modification, recompilation, and override of existing ACPI |
| data |
| tables. See the iASL User Guide for detailed information. |
| |
| iASL: Implemented a new Template Generator option in support of the new |
| Data |
| Table Compiler. This option will create examples of all known ACPI tables |
| that can be used as the basis for table development. See the iASL |
| documentation and the -T option. |
| |
| Disassembler and headers: Added support for the WDDT ACPI table (Watchdog |
| Descriptor Table). |
| |
| Updated the Linux makefiles for iASL and AcpiExec to place the generated |
| object files in the local directory so that there can be no collisions |
| between the shared files between them that are generated with different |
| options. |
| |
| Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. |
| Use |
| the #define __APPLE__ to enable this support. |
| |
| ---------------------------------------- |
| 28 May 2010. Summary of changes for version 20100528: |
| |
| Note: The ACPI 4.0a specification was released on April 5, 2010 and is |
| available at www.acpi.info. This is primarily an errata release. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Undefined ACPI tables: We are looking for the definitions for the |
| following |
| ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. |
| |
| Implemented support to enable multi-byte transfers for Embedded |
| Controller |
| (EC) operation regions. Previously, the maximum data size passed to the |
| EC |
| operation region handler was a single byte. There are often EC Fields |
| larger |
| than one byte that need to be transferred, and it is useful for the EC |
| driver |
| to lock these as a single transaction. This change enables single |
| transfers |
| larger than 8 bits. This effectively changes the access to the EC space |
| from |
| ByteAcc to AnyAcc, and will probably require changes to the host OS |
| Embedded |
| Controller driver to enable 16/32/64/256-bit transfers in addition to 8- |
| bit |
| transfers. Alexey Starikovskiy, Lin Ming |
| |
| Implemented a performance enhancement for namespace search and access. |
| This |
| change enhances the performance of namespace searches and walks by adding |
| a |
| backpointer to the parent in each namespace node. On large namespaces, |
| this |
| change can improve overall ACPI performance by up to 9X. Adding a pointer |
| to |
| each namespace node increases the overall size of the internal namespace |
| by |
| about 5%, since each namespace entry usually consists of both a namespace |
| node and an ACPI operand object. However, this is the first growth of the |
| namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. |
| |
| Implemented a performance optimization that reduces the number of |
| namespace |
| walks. On control method exit, only walk the namespace if the method is |
| known |
| to have created namespace objects outside of its local scope. Previously, |
| the |
| entire namespace was traversed on each control method exit. This change |
| can |
| improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob |
| Moore. |
| |
| Added support to truncate I/O addresses to 16 bits for Windows |
| compatibility. |
| Some ASL code has been seen in the field that inadvertently has bits set |
| above bit 15. This feature is optional and is enabled if the BIOS |
| requests |
| any Windows OSI strings. It can also be enabled by the host OS. Matthew |
| Garrett, Bob Moore. |
| |
| Added support to limit the maximum time for the ASL Sleep() operator. To |
| prevent accidental deep sleeps, limit the maximum time that Sleep() will |
| actually sleep. Configurable, the default maximum is two seconds. ACPICA |
| bugzilla 854. |
| |
| Added run-time validation support for the _WDG and_WED Microsoft |
| predefined |
| methods. These objects are defined by "Windows Instrumentation", and are |
| not |
| part of the ACPI spec. ACPICA BZ 860. |
| |
| Expanded all statistic counters used during namespace and device |
| initialization from 16 to 32 bits in order to support very large |
| namespaces. |
| |
| Replaced all instances of %d in printf format specifiers with %u since |
| nearly |
| all integers in ACPICA are unsigned. |
| |
| Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly |
| returned |
| as AE_NO_HANDLER. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total |
| Debug Version: 164.2K Code, 51.5K Data, 215.7K Total |
| Current Release: |
| Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total |
| Debug Version: 164.1K Code, 51.5K Data, 215.6K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Added compiler support for the _WDG and_WED Microsoft predefined |
| methods. These objects are defined by "Windows Instrumentation", and are |
| not |
| part of the ACPI spec. ACPICA BZ 860. |
| |
| AcpiExec: added option to disable the memory tracking mechanism. The -dt |
| option will disable the tracking mechanism, which improves performance |
| considerably. |
| |
| AcpiExec: Restructured the command line options into -d (disable) and -e |
| (enable) options. |
| |
| ---------------------------------------- |
| 28 April 2010. Summary of changes for version 20100428: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, |
| including FADT-based and GPE Block Devices, execute any _PRW methods in |
| the |
| new table, and process any _Lxx/_Exx GPE methods in the new table. Any |
| runtime GPE that is referenced by an _Lxx/_Exx method in the new table is |
| immediately enabled. Handles the FADT-defined GPEs as well as GPE Block |
| Devices. Provides compatibility with other ACPI implementations. Two new |
| files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob |
| Moore. |
| |
| Fixed a regression introduced in version 20100331 within the table |
| manager |
| where initial table loading could fail. This was introduced in the fix |
| for |
| AcpiReallocateRootTable. Also, renamed some of fields in the table |
| manager |
| data structures to clarify their meaning and use. |
| |
| Fixed a possible allocation overrun during internal object copy in |
| AcpiUtCopySimpleObject. The original code did not correctly handle the |
| case |
| where the object to be copied was a namespace node. Lin Ming. ACPICA BZ |
| 847. |
| |
| Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a |
| possible access beyond end-of-allocation. Also, now fully validate |
| descriptor |
| (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total |
| Debug Version: 163.5K Code, 51.3K Data, 214.8K Total |
| Current Release: |
| Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total |
| Debug Version: 164.2K Code, 51.5K Data, 215.7K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented Min/Max/Len/Gran validation for address resource |
| descriptors. This change implements validation for the address fields |
| that |
| are common to all address-type resource descriptors. These checks are |
| implemented: Checks for valid Min/Max, length within the Min/Max window, |
| valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as |
| per |
| table 6-40 in the ACPI 4.0a specification. Also split the large |
| aslrestype1.c |
| and aslrestype2.c files into five new files. ACPICA BZ 840. |
| |
| iASL: Added support for the _Wxx predefined names. This support was |
| missing |
| and these names were not recognized by the compiler as valid predefined |
| names. ACPICA BZ 851. |
| |
| iASL: Added an error for all predefined names that are defined to return |
| no |
| value and thus must be implemented as Control Methods. These include all |
| of |
| the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous |
| names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. |
| |
| iASL: Implemented the -ts option to emit hex AML data in ASL format, as |
| an |
| ASL Buffer. Allows ACPI tables to be easily included within ASL files, to |
| be |
| dynamically loaded via the Load() operator. Also cleaned up output for |
| the |
| - |
| ta and -tc options. ACPICA BZ 853. |
| |
| Tests: Added a new file with examples of extended iASL error checking. |
| Demonstrates the advanced error checking ability of the iASL compiler. |
| Available at tests/misc/badcode.asl. |
| |
| ---------------------------------------- |
| 31 March 2010. Summary of changes for version 20100331: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed a major update for the GPE support in order to improve support |
| for |
| shared GPEs and to simplify both host OS and ACPICA code. Added a |
| reference |
| count mechanism to support shared GPEs that require multiple device |
| drivers. |
| Several external interfaces have changed. One external interface has been |
| removed. One new external interface was added. Most of the GPE external |
| interfaces now use the GPE spinlock instead of the events mutex (and the |
| Flags parameter for many GPE interfaces has been removed.) See the |
| updated |
| ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, |
| Rafael |
| Wysocki. ACPICA BZ 831. |
| |
| Changed: |
| AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus |
| Removed: |
| AcpiSetGpeType |
| New: |
| AcpiSetGpe |
| |
| Implemented write support for DataTable operation regions. These regions |
| are |
| defined via the DataTableRegion() operator. Previously, only read support |
| was |
| implemented. The ACPI specification allows DataTableRegions to be |
| read/write, |
| however. |
| |
| Implemented a new subsystem option to force a copy of the DSDT to local |
| memory. Optionally copy the entire DSDT to local memory (instead of |
| simply |
| mapping it.) There are some (albeit very rare) BIOSs that corrupt or |
| replace |
| the original DSDT, creating the need for this option. Default is FALSE, |
| do |
| not copy the DSDT. |
| |
| Implemented detection of a corrupted or replaced DSDT. This change adds |
| support to detect a DSDT that has been corrupted and/or replaced from |
| outside |
| the OS (by firmware). This is typically catastrophic for the system, but |
| has |
| been seen on some machines. Once this problem has been detected, the DSDT |
| copy option can be enabled via system configuration. Lin Ming, Bob Moore. |
| |
| Fixed two problems with AcpiReallocateRootTable during the root table |
| copy. |
| When copying the root table to the new allocation, the length used was |
| incorrect. The new size was used instead of the current table size, |
| meaning |
| too much data was copied. Also, the count of available slots for ACPI |
| tables |
| was not set correctly. Alexey Starikovskiy, Bob Moore. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total |
| Debug Version: 163.4K Code, 51.1K Data, 214.5K Total |
| Current Release: |
| Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total |
| Debug Version: 163.5K Code, 51.3K Data, 214.8K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implement limited typechecking for values returned from predefined |
| control methods. The type of any returned static (unnamed) object is now |
| validated. For example, Return(1). ACPICA BZ 786. |
| |
| iASL: Fixed a predefined name object verification regression. Fixes a |
| problem |
| introduced in version 20100304. An error is incorrectly generated if a |
| predefined name is declared as a static named object with a value defined |
| using the keywords "Zero", "One", or "Ones". Lin Ming. |
| |
| iASL: Added Windows 7 support for the -g option (get local ACPI tables) |
| by |
| reducing the requested registry access rights. ACPICA BZ 842. |
| |
| Disassembler: fixed a possible fault when generating External() |
| statements. |
| Introduced in commit ae7d6fd: Properly handle externals with parent- |
| prefix |
| (carat). Fixes a string length allocation calculation. Lin Ming. |
| |
| ---------------------------------------- |
| 04 March 2010. Summary of changes for version 20100304: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a possible problem with the AML Mutex handling function |
| AcpiExReleaseMutex where the function could fault under the very rare |
| condition when the interpreter has blocked, the interpreter lock is |
| released, |
| the interpreter is then reentered via the same thread, and attempts to |
| acquire an AML mutex that was previously acquired. FreeBSD report 140979. |
| Lin |
| Ming. |
| |
| Implemented additional configuration support for the AML "Debug Object". |
| Output from the debug object can now be enabled via a global variable, |
| AcpiGbl_EnableAmlDebugObject. This will assist with remote machine |
| debugging. |
| This debug output is now available in the release version of ACPICA |
| instead |
| of just the debug version. Also, the entire debug output module can now |
| be |
| configured out of the ACPICA build if desired. One new file added, |
| executer/exdebug.c. Lin Ming, Bob Moore. |
| |
| Added header support for the ACPI MCHI table (Management Controller Host |
| Interface Table). This table was added in ACPI 4.0, but the defining |
| document |
| has only recently become available. |
| |
| Standardized output of integer values for ACPICA warnings/errors. Always |
| use |
| 0x prefix for hex output, always use %u for unsigned integer decimal |
| output. |
| Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about |
| 400 |
| invocations.) These invocations were converted from the original |
| ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total |
| Debug Version: 163.5K Code, 50.9K Data, 214.4K Total |
| Current Release: |
| Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total |
| Debug Version: 163.4K Code, 51.1K Data, 214.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented typechecking support for static (non-control method) |
| predefined named objects that are declared with the Name() operator. For |
| example, the type of this object is now validated to be of type Integer: |
| Name(_BBN, 1). This change migrates the compiler to using the core |
| predefined |
| name table instead of maintaining a local version. Added a new file, |
| aslpredef.c. ACPICA BZ 832. |
| |
| Disassembler: Added support for the ACPI 4.0 MCHI table. |
| |
| ---------------------------------------- |
| 21 January 2010. Summary of changes for version 20100121: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added the 2010 copyright to all module headers and signons. This affects |
| virtually every file in the ACPICA core subsystem, the iASL compiler, the |
| tools/utilities, and the test suites. |
| |
| Implemented a change to the AcpiGetDevices interface to eliminate |
| unnecessary |
| invocations of the _STA method. In the case where a specific _HID is |
| requested, do not run _STA until a _HID match is found. This eliminates |
| potentially dozens of _STA calls during a search for a particular |
| device/HID, |
| which in turn can improve boot times. ACPICA BZ 828. Lin Ming. |
| |
| Implemented an additional repair for predefined method return values. |
| Attempt |
| to repair unexpected NULL elements within returned Package objects. |
| Create |
| an |
| Integer of value zero, a NULL String, or a zero-length Buffer as |
| appropriate. |
| ACPICA BZ 818. Lin Ming, Bob Moore. |
| |
| Removed the obsolete ACPI_INTEGER data type. This type was introduced as |
| the |
| code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 |
| (with |
| 64-bit AML integers). It is now obsolete and this change removes it from |
| the |
| ACPICA code base, replaced by UINT64. The original typedef has been |
| retained |
| for now for compatibility with existing device driver code. ACPICA BZ |
| 824. |
| |
| Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field |
| in |
| the parse tree object. |
| |
| Added additional warning options for the gcc-4 generation. Updated the |
| source |
| accordingly. This includes some code restructuring to eliminate |
| unreachable |
| code, elimination of some gotos, elimination of unused return values, |
| some |
| additional casting, and removal of redundant declarations. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total |
| Debug Version: 163.4K Code, 50.8K Data, 214.2K Total |
| Current Release: |
| Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total |
| Debug Version: 163.5K Code, 50.9K Data, 214.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| No functional changes for this release. |
| |
| ---------------------------------------- |
| 14 December 2009. Summary of changes for version 20091214: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Enhanced automatic data type conversions for predefined name repairs. |
| This |
| change expands the automatic repairs/conversions for predefined name |
| return |
| values to make Integers, Strings, and Buffers fully interchangeable. |
| Also, |
| a |
| Buffer can be converted to a Package of Integers if necessary. The |
| nsrepair.c |
| module was completely restructured. Lin Ming, Bob Moore. |
| |
| Implemented automatic removal of null package elements during predefined |
| name |
| repairs. This change will automatically remove embedded and trailing NULL |
| package elements from returned package objects that are defined to |
| contain |
| a |
| variable number of sub-packages. The driver is then presented with a |
| package |
| with no null elements to deal with. ACPICA BZ 819. |
| |
| Implemented a repair for the predefined _FDE and _GTM names. The expected |
| return value for both names is a Buffer of 5 DWORDs. This repair fixes |
| two |
| possible problems (both seen in the field), where a package of integers |
| is |
| returned, or a buffer of BYTEs is returned. With assistance from Jung-uk |
| Kim. |
| |
| Implemented additional module-level code support. This change will |
| properly |
| execute module-level code that is not at the root of the namespace (under |
| a |
| Device object, etc.). Now executes the code within the current scope |
| instead |
| of the root. ACPICA BZ 762. Lin Ming. |
| |
| Fixed possible mutex acquisition errors when running _REG methods. Fixes |
| a |
| problem where mutex errors can occur when running a _REG method that is |
| in |
| the same scope as a method-defined operation region or an operation |
| region |
| under a module-level IF block. This type of code is rare, so the problem |
| has |
| not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. |
| |
| Fixed a possible memory leak during module-level code execution. An |
| object |
| could be leaked for each block of executed module-level code if the |
| interpreter slack mode is enabled This change deletes any implicitly |
| returned |
| object from the module-level code block. Lin Ming. |
| |
| Removed messages for successful predefined repair(s). The repair |
| mechanism |
| was considered too wordy. Now, messages are only unconditionally emitted |
| if |
| the return object cannot be repaired. Existing messages for successful |
| repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ |
| 827. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total |
| Debug Version: 162.7K Code, 50.8K Data, 213.5K Total |
| Current Release: |
| Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total |
| Debug Version: 163.4K Code, 50.8K Data, 214.2K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a regression introduced in 20091112 where intermediate .SRC |
| files |
| were no longer automatically removed at the termination of the compile. |
| |
| acpiexec: Implemented the -f option to specify default region fill value. |
| This option specifies the value used to initialize buffers that simulate |
| operation regions. Default value is zero. Useful for debugging problems |
| that |
| depend on a specific initial value for a region or field. |
| |
| ---------------------------------------- |
| 12 November 2009. Summary of changes for version 20091112: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a post-order callback to AcpiWalkNamespace. The existing |
| interface only has a pre-order callback. This change adds an additional |
| parameter for a post-order callback which will be more useful for bus |
| scans. |
| ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. |
| |
| Modified the behavior of the operation region memory mapping cache for |
| SystemMemory. Ensure that the memory mappings created for operation |
| regions |
| do not cross 4K page boundaries. Crossing a page boundary while mapping |
| regions can cause kernel warnings on some hosts if the pages have |
| different |
| attributes. Such regions are probably BIOS bugs, and this is the |
| workaround. |
| Linux BZ 14445. Lin Ming. |
| |
| Implemented an automatic repair for predefined methods that must return |
| sorted lists. This change will repair (by sorting) packages returned by |
| _ALR, |
| _PSS, and _TSS. Drivers can now assume that the packages are correctly |
| sorted |
| and do not contain NULL package elements. Adds one new file, |
| namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. |
| |
| Fixed a possible fault during predefined name validation if a return |
| Package |
| object contains NULL elements. Also adds a warning if a NULL element is |
| followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement |
| may |
| include repair or removal of all such NULL elements where possible. |
| |
| Implemented additional module-level executable AML code support. This |
| change |
| will execute module-level code that is not at the root of the namespace |
| (under a Device object, etc.) at table load time. Module-level executable |
| AML |
| code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. |
| |
| Implemented a new internal function to create Integer objects. This |
| function |
| simplifies miscellaneous object creation code. ACPICA BZ 823. |
| |
| Reduced the severity of predefined repair messages, Warning to Info. |
| Since |
| the object was successfully repaired, a warning is too severe. Reduced to |
| an |
| info message for now. These messages may eventually be changed to debug- |
| only. |
| ACPICA BZ 812. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total |
| Debug Version: 161.8K Code, 50.6K Data, 212.4K Total |
| Current Release: |
| Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total |
| Debug Version: 162.7K Code, 50.8K Data, 213.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Implemented Switch() with While(1) so that Break works correctly. |
| This |
| change correctly implements the Switch operator with a surrounding |
| While(1) |
| so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. |
| |
| iASL: Added a message if a package initializer list is shorter than |
| package |
| length. Adds a new remark for a Package() declaration if an initializer |
| list |
| exists, but is shorter than the declared length of the package. Although |
| technically legal, this is probably a coding error and it is seen in the |
| field. ACPICA BZ 815. Lin Ming, Bob Moore. |
| |
| iASL: Fixed a problem where the compiler could fault after the maximum |
| number |
| of errors was reached (200). |
| |
| acpixtract: Fixed a possible warning for pointer cast if the compiler |
| warning |
| level set very high. |
| |
| ---------------------------------------- |
| 13 October 2009. Summary of changes for version 20091013: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where an Operation Region _REG method could be executed |
| more |
| than once. If a custom address space handler is installed by the host |
| before |
| the "initialize operation regions" phase of the ACPICA initialization, |
| any |
| _REG methods for that address space could be executed twice. This change |
| fixes the problem. ACPICA BZ 427. Lin Ming. |
| |
| Fixed a possible memory leak for the Scope() ASL operator. When the exact |
| invocation of "Scope(\)" is executed (change scope to root), one internal |
| operand object was leaked. Lin Ming. |
| |
| Implemented a run-time repair for the _MAT predefined method. If the _MAT |
| return value is defined as a Field object in the AML, and the field |
| size is less than or equal to the default width of an integer (32 or |
| 64),_MAT |
| can incorrectly return an Integer instead of a Buffer. ACPICA now |
| automatically repairs this problem. ACPICA BZ 810. |
| |
| Implemented a run-time repair for the _BIF and _BIX predefined methods. |
| The |
| "OEM Information" field is often incorrectly returned as an Integer with |
| value zero if the field is not supported by the platform. This is due to |
| an |
| ambiguity in the ACPI specification. The field should always be a string. |
| ACPICA now automatically repairs this problem by returning a NULL string |
| within the returned Package. ACPICA BZ 807. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total |
| Debug Version: 161.7K Code, 50.9K Data, 212.6K Total |
| Current Release: |
| Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total |
| Debug Version: 161.8K Code, 50.6K Data, 212.4K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed a problem where references to external symbols that |
| contained one or more parent-prefixes (carats) were not handled |
| correctly, |
| possibly causing a fault. ACPICA BZ 806. Lin Ming. |
| |
| Disassembler: Restructured the code so that all functions that handle |
| external symbols are in a single module. One new file is added, |
| common/dmextern.c. |
| |
| AML Debugger: Added a max count argument for the Batch command (which |
| executes multiple predefined methods within the namespace.) |
| |
| iASL: Updated the compiler documentation (User Reference.) Available at |
| http://www.acpica.org/documentation/. ACPICA BZ 750. |
| |
| AcpiXtract: Updated for Lint and other formatting changes. Close all open |
| files. |
| |
| ---------------------------------------- |
| 03 September 2009. Summary of changes for version 20090903: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| For Windows Vista compatibility, added the automatic execution of an _INI |
| method located at the namespace root (\_INI). This method is executed at |
| table load time. This support is in addition to the automatic execution |
| of |
| \_SB._INI. Lin Ming. |
| |
| Fixed a possible memory leak in the interpreter for AML package objects |
| if |
| the package initializer list is longer than the defined size of the |
| package. |
| This apparently can only happen if the BIOS changes the package size on |
| the |
| fly (seen in a _PSS object), as ASL compilers do not allow this. The |
| interpreter will truncate the package to the defined size (and issue an |
| error |
| message), but previously could leave the extra objects undeleted if they |
| were |
| pre-created during the argument processing (such is the case if the |
| package |
| consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. |
| |
| Fixed a problem seen when a Buffer or String is stored to itself via ASL. |
| This has been reported in the field. Previously, ACPICA would zero out |
| the |
| buffer/string. Now, the operation is treated as a noop. Provides Windows |
| compatibility. ACPICA BZ 803. Lin Ming. |
| |
| Removed an extraneous error message for ASL constructs of the form |
| Store(LocalX,LocalX) when LocalX is uninitialized. These curious |
| statements |
| are seen in many BIOSs and are once again treated as NOOPs and no error |
| is |
| emitted when they are encountered. ACPICA BZ 785. |
| |
| Fixed an extraneous warning message if a _DSM reserved method returns a |
| Package object. _DSM can return any type of object, so validation on the |
| return type cannot be performed. ACPICA BZ 802. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total |
| Debug Version: 161.6K Code, 50.9K Data, 212.5K Total |
| Current Release: |
| Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total |
| Debug Version: 161.7K Code, 50.9K Data, 212.6K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a problem with the use of the Alias operator and Resource |
| Templates. The correct alias is now constructed and no error is emitted. |
| ACPICA BZ 738. |
| |
| iASL: Implemented the -I option to specify additional search directories |
| for |
| include files. Allows multiple additional search paths for include files. |
| Directories are searched in the order specified on the command line |
| (after |
| the local directory is searched.) ACPICA BZ 800. |
| |
| iASL: Fixed a problem where the full pathname for include files was not |
| emitted for warnings/errors. This caused the IDE support to not work |
| properly. ACPICA BZ 765. |
| |
| iASL: Implemented the -@ option to specify a Windows-style response file |
| containing additional command line options. ACPICA BZ 801. |
| |
| AcpiExec: Added support to load multiple AML files simultaneously (such |
| as |
| a |
| DSDT and multiple SSDTs). Also added support for wildcards within the AML |
| pathname. These features allow all machine tables to be easily loaded and |
| debugged together. ACPICA BZ 804. |
| |
| Disassembler: Added missing support for disassembly of HEST table Error |
| Bank |
| subtables. |
| |
| ---------------------------------------- |
| 30 July 2009. Summary of changes for version 20090730: |
| |
| The ACPI 4.0 implementation for ACPICA is complete with this release. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| ACPI 4.0: Added header file support for all new and changed ACPI tables. |
| Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are |
| new |
| for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, |
| BERT, |
| EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. |
| There |
| have been some ACPI 4.0 changes to other existing tables. Split the large |
| actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. |
| |
| ACPI 4.0: Implemented predefined name validation for all new names. There |
| are |
| 31 new names in ACPI 4.0. The predefined validation module was split into |
| two |
| files. The new file is namespace/nsrepair.c. ACPICA BZ 770. |
| |
| Implemented support for so-called "module-level executable code". This is |
| executable AML code that exists outside of any control method and is |
| intended |
| to be executed at table load time. Although illegal since ACPI 2.0, this |
| type |
| of code still exists and is apparently still being created. Blocks of |
| this |
| code are now detected and executed as intended. Currently, the code |
| blocks |
| must exist under either an If, Else, or While construct; these are the |
| typical cases seen in the field. ACPICA BZ 762. Lin Ming. |
| |
| Implemented an automatic dynamic repair for predefined names that return |
| nested Package objects. This applies to predefined names that are defined |
| to |
| return a variable-length Package of sub-packages. If the number of sub- |
| packages is one, BIOS code is occasionally seen that creates a simple |
| single |
| package with no sub-packages. This code attempts to fix the problem by |
| wrapping a new package object around the existing package. These methods |
| can |
| be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA |
| BZ |
| 790. |
| |
| Fixed a regression introduced in 20090625 for the AcpiGetDevices |
| interface. |
| The _HID/_CID matching was broken and no longer matched IDs correctly. |
| ACPICA |
| BZ 793. |
| |
| Fixed a problem with AcpiReset where the reset would silently fail if the |
| register was one of the protected I/O ports. AcpiReset now bypasses the |
| port |
| validation mechanism. This may eventually be driven into the |
| AcpiRead/Write |
| interfaces. |
| |
| Fixed a regression related to the recent update of the AcpiRead/Write |
| interfaces. A sleep/suspend could fail if the optional PM2 Control |
| register |
| does not exist during an attempt to write the Bus Master Arbitration bit. |
| (However, some hosts already delete the code that writes this bit, and |
| the |
| code may in fact be obsolete at this date.) ACPICA BZ 799. |
| |
| Fixed a problem where AcpiTerminate could fault if inadvertently called |
| twice |
| in succession. ACPICA BZ 795. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total |
| Debug Version: 160.5K Code, 50.6K Data, 211.1K Total |
| Current Release: |
| Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total |
| Debug Version: 161.6K Code, 50.9K Data, 212.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| ACPI 4.0: Implemented disassembler support for all new ACPI tables and |
| changes to existing tables. ACPICA BZ 775. |
| |
| ---------------------------------------- |
| 25 June 2009. Summary of changes for version 20090625: |
| |
| The ACPI 4.0 Specification was released on June 16 and is available at |
| www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will |
| continue for the next few releases. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| ACPI 4.0: Implemented interpreter support for the IPMI operation region |
| address space. Includes support for bi-directional data buffers and an |
| IPMI |
| address space handler (to be installed by an IPMI device driver.) ACPICA |
| BZ |
| 773. Lin Ming. |
| |
| ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. |
| Includes |
| support in both the header files and the disassembler. |
| |
| Completed a major update for the AcpiGetObjectInfo external interface. |
| Changes include: |
| - Support for variable, unlimited length HID, UID, and CID strings. |
| - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, |
| etc.) |
| - Call the _SxW power methods on behalf of a device object. |
| - Determine if a device is a PCI root bridge. |
| - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. |
| These changes will require an update to all callers of this interface. |
| See |
| the updated ACPICA Programmer Reference for details. One new source file |
| has |
| been added - utilities/utids.c. ACPICA BZ 368, 780. |
| |
| Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit |
| transfers. The Value parameter has been extended from 32 bits to 64 bits |
| in |
| order to support new ACPI 4.0 tables. These changes will require an |
| update |
| to |
| all callers of these interfaces. See the ACPICA Programmer Reference for |
| details. ACPICA BZ 768. |
| |
| Fixed several problems with AcpiAttachData. The handler was not invoked |
| when |
| the host node was deleted. The data sub-object was not automatically |
| deleted |
| when the host node was deleted. The interface to the handler had an |
| unused |
| parameter, this was removed. ACPICA BZ 778. |
| |
| Enhanced the function that dumps ACPI table headers. All non-printable |
| characters in the string fields are now replaced with '?' (Signature, |
| OemId, |
| OemTableId, and CompilerId.) ACPI tables with non-printable characters in |
| these fields are occasionally seen in the field. ACPICA BZ 788. |
| |
| Fixed a problem with predefined method repair code where the code that |
| attempts to repair/convert an object of incorrect type is only executed |
| on |
| the first time the predefined method is called. The mechanism that |
| disables |
| warnings on subsequent calls was interfering with the repair mechanism. |
| ACPICA BZ 781. |
| |
| Fixed a possible memory leak in the predefined validation/repair code |
| when |
| a |
| buffer is automatically converted to an expected string object. |
| |
| Removed obsolete 16-bit files from the distribution and from the current |
| git |
| tree head. ACPICA BZ 776. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total |
| Debug Version: 158.9K Code, 50.0K Data, 208.9K Total |
| Current Release: |
| Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total |
| Debug Version: 160.5K Code, 50.6K Data, 211.1K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI |
| operation region keyword. ACPICA BZ 771, 772. Lin Ming. |
| |
| ACPI 4.0: iASL - implemented compile-time validation support for all new |
| predefined names and control methods (31 total). ACPICA BZ 769. |
| |
| ---------------------------------------- |
| 21 May 2009. Summary of changes for version 20090521: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Disabled the preservation of the SCI enable bit in the PM1 control |
| register. |
| The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification |
| to |
| be |
| a "preserved" bit - "OSPM always preserves this bit position", section |
| 4.7.3.2.1. However, some machines fail if this bit is in fact preserved |
| because the bit needs to be explicitly set by the OS as a workaround. No |
| machines fail if the bit is not preserved. Therefore, ACPICA no longer |
| attempts to preserve this bit. |
| |
| Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or |
| incorrectly formed _PRT package could cause a fault. Added validation to |
| ensure that each package element is actually a sub-package. |
| |
| Implemented a new interface to install or override a single control |
| method, |
| AcpiInstallMethod. This interface is useful when debugging in order to |
| repair |
| an existing method or to install a missing method without having to |
| override |
| the entire ACPI table. See the ACPICA Programmer Reference for use and |
| examples. Lin Ming, Bob Moore. |
| |
| Fixed several reference count issues with the DdbHandle object that is |
| created from a Load or LoadTable operator. Prevent premature deletion of |
| the |
| object. Also, mark the object as invalid once the table has been |
| unloaded. |
| This is needed because the handle itself may not be deleted after the |
| table |
| unload, depending on whether it has been stored in a named object by the |
| caller. Lin Ming. |
| |
| Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple |
| mutexes of the same sync level are acquired but then not released in |
| strict |
| opposite order, the internally maintained Current Sync Level becomes |
| confused |
| and can cause subsequent execution errors. ACPICA BZ 471. |
| |
| Changed the allowable release order for ASL mutex objects. The ACPI 4.0 |
| specification has been changed to make the SyncLevel for mutex objects |
| more |
| useful. When releasing a mutex, the SyncLevel of the mutex must now be |
| the |
| same as the current sync level. This makes more sense than the previous |
| rule |
| (SyncLevel less than or equal). This change updates the code to match the |
| specification. |
| |
| Fixed a problem with the local version of the AcpiOsPurgeCache function. |
| The |
| (local) cache must be locked during all cache object deletions. Andrew |
| Baumann. |
| |
| Updated the Load operator to use operation region interfaces. This |
| replaces |
| direct memory mapping with region access calls. Now, all region accesses |
| go |
| through the installed region handler as they should. |
| |
| Simplified and optimized the NsGetNextNode function. Reduced parameter |
| count |
| and reduced code for this frequently used function. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total |
| Debug Version: 158.0K Code, 49.9K Data, 207.9K Total |
| Current Release: |
| Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total |
| Debug Version: 158.9K Code, 50.0K Data, 208.9K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some |
| problems |
| with sub-table disassembly and handling invalid sub-tables. Attempt |
| recovery |
| after an invalid sub-table ID. |
| |
| ---------------------------------------- |
| 22 April 2009. Summary of changes for version 20090422: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a compatibility issue with the recently released I/O port |
| protection |
| mechanism. For windows compatibility, 1) On a port protection violation, |
| simply ignore the request and do not return an exception (allow the |
| control |
| method to continue execution.) 2) If only part of the request overlaps a |
| protected port, read/write the individual ports that are not protected. |
| Linux |
| BZ 13036. Lin Ming |
| |
| Enhanced the execution of the ASL/AML BreakPoint operator so that it |
| actually |
| breaks into the AML debugger if the debugger is present. This matches the |
| ACPI-defined behavior. |
| |
| Fixed several possible warnings related to the use of the configurable |
| ACPI_THREAD_ID. This type can now be configured as either an integer or a |
| pointer with no warnings. Also fixes several warnings in printf-like |
| statements for the 64-bit build when the type is configured as a pointer. |
| ACPICA BZ 766, 767. |
| |
| Fixed a number of possible warnings when compiling with gcc 4+ (depending |
| on |
| warning options.) Examples include printf formats, aliasing, unused |
| globals, |
| missing prototypes, missing switch default statements, use of non-ANSI |
| library functions, use of non-ANSI constructs. See generate/unix/Makefile |
| for |
| a list of warning options used with gcc 3 and 4. ACPICA BZ 735. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total |
| Debug Version: 157.7K Code, 49.9K Data, 207.6K Total |
| Current Release: |
| Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total |
| Debug Version: 158.0K Code, 49.9K Data, 207.9K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Fixed a generation warning from Bison 2.3 and fixed several |
| warnings |
| on |
| the 64-bit build. |
| |
| iASL: Fixed a problem where the Unix/Linux versions of the compiler could |
| not |
| correctly digest Windows/DOS formatted files (with CR/LF). |
| |
| iASL: Added a new option for "quiet mode" (-va) that produces only the |
| compilation summary, not individual errors and warnings. Useful for large |
| batch compilations. |
| |
| AcpiExec: Implemented a new option (-z) to enable a forced |
| semaphore/mutex |
| timeout that can be used to detect hang conditions during execution of |
| AML |
| code (includes both internal semaphores and AML-defined mutexes and |
| events.) |
| |
| Added new makefiles for the generation of acpica in a generic unix-like |
| environment. These makefiles are intended to generate the acpica tools |
| and |
| utilities from the original acpica git source tree structure. |
| |
| Test Suites: Updated and cleaned up the documentation files. Updated the |
| copyrights to 2009, affecting all source files. Use the new version of |
| iASL |
| with quiet mode. Increased the number of available semaphores in the |
| Windows |
| OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, |
| added |
| an alternate implementation of the semaphore timeout to allow aslts to |
| execute fully on Cygwin. |
| |
| ---------------------------------------- |
| 20 March 2009. Summary of changes for version 20090320: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a possible race condition between AcpiWalkNamespace and dynamic |
| table |
| unloads. Added a reader/writer locking mechanism to allow multiple |
| concurrent |
| namespace walks (readers), but block a dynamic table unload until it can |
| gain |
| exclusive write access to the namespace. This fixes a problem where a |
| table |
| unload could (possibly catastrophically) delete the portion of the |
| namespace |
| that is currently being examined by a walk. Adds a new file, utlock.c, |
| that |
| implements the reader/writer lock mechanism. ACPICA BZ 749. |
| |
| Fixed a regression introduced in version 20090220 where a change to the |
| FADT |
| handling could cause the ACPICA subsystem to access non-existent I/O |
| ports. |
| |
| Modified the handling of FADT register and table (FACS/DSDT) addresses. |
| The |
| FADT can contain both 32-bit and 64-bit versions of these addresses. |
| Previously, the 64-bit versions were favored, meaning that if both 32 and |
| 64 |
| versions were valid, but not equal, the 64-bit version was used. This was |
| found to cause some machines to fail. Now, in this case, the 32-bit |
| version |
| is used instead. This now matches the Windows behavior. |
| |
| Implemented a new mechanism to protect certain I/O ports. Provides |
| Microsoft |
| compatibility and protects the standard PC I/O ports from access via AML |
| code. Adds a new file, hwvalid.c |
| |
| Fixed a possible extraneous warning message from the FADT support. The |
| message warns of a 32/64 length mismatch between the legacy and GAS |
| definitions for a register. |
| |
| Removed the obsolete AcpiOsValidateAddress OSL interface. This interface |
| is |
| made obsolete by the port protection mechanism above. It was previously |
| used |
| to validate the entire address range of an operation region, which could |
| be |
| incorrect if the range included illegal ports, but fields within the |
| operation region did not actually access those ports. Validation is now |
| performed on a per-field basis instead of the entire region. |
| |
| Modified the handling of the PM1 Status Register ignored bit (bit 11.) |
| Ignored bits must be "preserved" according to the ACPI spec. Usually, |
| this |
| means a read/modify/write when writing to the register. However, for |
| status |
| registers, writing a one means clear the event. Writing a zero means |
| preserve |
| the event (do not clear.) This behavior is clarified in the ACPI 4.0 |
| spec, |
| and the ACPICA code now simply always writes a zero to the ignored bit. |
| |
| Modified the handling of ignored bits for the PM1 A/B Control Registers. |
| As |
| per the ACPI specification, for the control registers, preserve |
| (read/modify/write) all bits that are defined as either reserved or |
| ignored. |
| |
| Updated the handling of write-only bits in the PM1 A/B Control Registers. |
| When reading the register, zero the write-only bits as per the ACPI spec. |
| ACPICA BZ 443. Lin Ming. |
| |
| Removed "Linux" from the list of supported _OSI strings. Linux no longer |
| wants to reply true to this request. The Windows strings are the only |
| paths |
| through the AML that are tested and known to work properly. |
| |
| Previous Release: |
| Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total |
| Debug Version: 156.9K Code, 49.8K Data, 206.7K Total |
| Current Release: |
| Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total |
| Debug Version: 157.7K Code, 49.9K Data, 207.6K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c |
| and |
| aetables.c |
| |
| ---------------------------------------- |
| 20 February 2009. Summary of changes for version 20090220: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Optimized the ACPI register locking. Removed locking for reads from the |
| ACPI |
| bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock |
| is |
| not required when reading the single-bit registers. The |
| AcpiGetRegisterUnlocked function is no longer needed and has been |
| removed. |
| This will improve performance for reads on these registers. ACPICA BZ |
| 760. |
| |
| Fixed the parameter validation for AcpiRead/Write. Now return |
| AE_BAD_PARAMETER if the input register pointer is null, and |
| AE_BAD_ADDRESS |
| if |
| the register has an address of zero. Previously, these cases simply |
| returned |
| AE_OK. For optional registers such as PM1B status/enable/control, the |
| caller |
| should check for a valid register address before calling. ACPICA BZ 748. |
| |
| Renamed the external ACPI bit register access functions. Renamed |
| AcpiGetRegister and AcpiSetRegister to clarify the purpose of these |
| functions. The new names are AcpiReadBitRegister and |
| AcpiWriteBitRegister. |
| Also, restructured the code for these functions by simplifying the code |
| path |
| and condensing duplicate code to reduce code size. |
| |
| Added new functions to transparently handle the possibly split PM1 A/B |
| registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two |
| functions |
| now handle the split registers for PM1 Status, Enable, and Control. |
| ACPICA |
| BZ |
| 746. |
| |
| Added a function to handle the PM1 control registers, |
| AcpiHwWritePm1Control. |
| This function writes both of the PM1 control registers (A/B). These |
| registers |
| are different than the PM1 A/B status and enable registers in that |
| different |
| values can be written to the A/B registers. Most notably, the SLP_TYP |
| bits |
| can be different, as per the values returned from the _Sx predefined |
| methods. |
| |
| Removed an extra register write within AcpiHwClearAcpiStatus. This |
| function |
| was writing an optional PM1B status register twice. The existing call to |
| the |
| low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 |
| A/B |
| register. ACPICA BZ 751. |
| |
| Split out the PM1 Status registers from the FADT. Added new globals for |
| these |
| registers (A/B), similar to the way the PM1 Enable registers are handled. |
| Instead of overloading the FADT Event Register blocks. This makes the |
| code |
| clearer and less prone to error. |
| |
| Fixed the warning message for when the platform contains too many ACPI |
| tables |
| for the default size of the global root table data structure. The |
| calculation |
| for the truncation value was incorrect. |
| |
| Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this |
| obsolete macro, since it is now a simple reference to ->common.type. |
| There |
| were about 150 invocations of the macro across 41 files. ACPICA BZ 755. |
| |
| Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as |
| TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to |
| simply SLEEP_TYPE. ACPICA BZ 754. |
| |
| Conditionally compile the AcpiSetFirmwareWakingVector64 function. This |
| function is only needed on 64-bit host operating systems and is thus not |
| included for 32-bit hosts. |
| |
| Debug output: print the input and result for invocations of the _OSI |
| reserved |
| control method via the ACPI_LV_INFO debug level. Also, reduced some of |
| the |
| verbosity of this debug level. Len Brown. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total |
| Debug Version: 157.3K Code, 49.8K Data, 207.1K Total |
| Current Release: |
| Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total |
| Debug Version: 156.9K Code, 49.8K Data, 206.7K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the |
| various legal performance profiles. |
| |
| ---------------------------------------- |
| 23 January 2009. Summary of changes for version 20090123: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added the 2009 copyright to all module headers and signons. This affects |
| virtually every file in the ACPICA core subsystem, the iASL compiler, and |
| the tools/utilities. |
| |
| Implemented a change to allow the host to override any ACPI table, |
| including |
| dynamically loaded tables. Previously, only the DSDT could be replaced by |
| the |
| host. With this change, the AcpiOsTableOverride interface is called for |
| each |
| table found in the RSDT/XSDT during ACPICA initialization, and also |
| whenever |
| a table is dynamically loaded via the AML Load operator. |
| |
| Updated FADT flag definitions, especially the Boot Architecture flags. |
| |
| Debugger: For the Find command, automatically pad the input ACPI name |
| with |
| underscores if the name is shorter than 4 characters. This enables a |
| match |
| with the actual namespace entry which is itself padded with underscores. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total |
| Debug Version: 157.1K Code, 49.7K Data, 206.8K Total |
| Current Release: |
| Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total |
| Debug Version: 157.3K Code, 49.8K Data, 207.1K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fix build error under Bison-2.4. |
| |
| Disassembler: Enhanced FADT support. Added decoding of the Boot |
| Architecture |
| flags. Now decode all flags, regardless of the FADT version. Flag output |
| includes the FADT version which first defined each flag. |
| |
| The iASL -g option now dumps the RSDT to a file (in addition to the FADT |
| and |
| DSDT). Windows only. |
| |
| ---------------------------------------- |
| 04 December 2008. Summary of changes for version 20081204: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The ACPICA Programmer Reference has been completely updated and revamped |
| for |
| this release. This includes updates to the external interfaces, OSL |
| interfaces, the overview sections, and the debugger reference. |
| |
| Several new ACPICA interfaces have been implemented and documented in the |
| programmer reference: |
| AcpiReset - Writes the reset value to the FADT-defined reset register. |
| AcpiDisableAllGpes - Disable all available GPEs. |
| AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. |
| AcpiGetGpeDevice - Get the GPE block device associated with a GPE. |
| AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. |
| AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) |
| AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) |
| |
| Most of the public ACPI hardware-related interfaces have been moved to a |
| new |
| file, components/hardware/hwxface.c |
| |
| Enhanced the FADT parsing and low-level ACPI register access: The ACPI |
| register lengths within the FADT are now used, and the low level ACPI |
| register access no longer hardcodes the ACPI register lengths. Given that |
| there may be some risk in actually trusting the FADT register lengths, a |
| run- |
| time option was added to fall back to the default hardcoded lengths if |
| the |
| FADT proves to contain incorrect values - UseDefaultRegisterWidths. This |
| option is set to true for now, and a warning is issued if a suspicious |
| FADT |
| register length is overridden with the default value. |
| |
| Fixed a reference count issue in NsRepairObject. This problem was |
| introduced |
| in version 20081031 as part of a fix to repair Buffer objects within |
| Packages. Lin Ming. |
| |
| Added semaphore support to the Linux/Unix application OS-services layer |
| (OSL). ACPICA BZ 448. Lin Ming. |
| |
| Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes |
| will |
| be implemented in the OSL, or will binary semaphores be used instead. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total |
| Debug Version: 156.4K Code, 49.4K Data, 205.8K Total |
| Current Release: |
| Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total |
| Debug Version: 157.1K Code, 49.7K Data, 206.8K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Completed the '-e' option to include additional ACPI tables in |
| order |
| to |
| aid with disassembly and External statement generation. ACPICA BZ 742. |
| Lin |
| Ming. |
| |
| iASL: Removed the "named object in while loop" error. The compiler cannot |
| determine how many times a loop will execute. ACPICA BZ 730. |
| |
| Disassembler: Implemented support for FADT revision 2 (MS extension). |
| ACPICA |
| BZ 743. |
| |
| Disassembler: Updates for several ACPI data tables (HEST, EINJ, and |
| MCFG). |
| |
| ---------------------------------------- |
| 31 October 2008. Summary of changes for version 20081031: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Restructured the ACPICA header files into public/private. acpi.h now |
| includes |
| only the "public" acpica headers. All other acpica headers are "private" |
| and |
| should not be included by acpica users. One new file, accommon.h is used |
| to |
| include the commonly used private headers for acpica code generation. |
| Future |
| plans include moving all private headers to a new subdirectory. |
| |
| Implemented an automatic Buffer->String return value conversion for |
| predefined ACPI methods. For these methods (such as _BIF), added |
| automatic |
| conversion for return objects that are required to be a String, but a |
| Buffer |
| was found instead. This can happen when reading string battery data from |
| an |
| operation region, because it used to be difficult to convert the data |
| from |
| buffer to string from within the ASL. Ensures that the host OS is |
| provided |
| with a valid null-terminated string. Linux BZ 11822. |
| |
| Updated the FACS waking vector interfaces. Split |
| AcpiSetFirmwareWakingVector |
| into two: one for the 32-bit vector, another for the 64-bit vector. This |
| is |
| required because the host OS must setup the wake much differently for |
| each |
| vector (real vs. protected mode, etc.) and the interface itself should |
| not |
| be |
| deciding which vector to use. Also, eliminated the |
| GetFirmwareWakingVector |
| interface, as it served no purpose (only the firmware reads the vector, |
| OS |
| only writes the vector.) ACPICA BZ 731. |
| |
| Implemented a mechanism to escape infinite AML While() loops. Added a |
| loop |
| counter to force exit from AML While loops if the count becomes too |
| large. |
| This can occur in poorly written AML when the hardware does not respond |
| within a while loop and the loop does not implement a timeout. The |
| maximum |
| loop count is configurable. A new exception code is returned when a loop |
| is |
| broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. |
| |
| Optimized the execution of AML While loops. Previously, a control state |
| object was allocated and freed for each execution of the loop. The |
| optimization is to simply reuse the control state for each iteration. |
| This |
| speeds up the raw loop execution time by about 5%. |
| |
| Enhanced the implicit return mechanism. For Windows compatibility, return |
| an |
| implicit integer of value zero for methods that contain no executable |
| code. |
| Such methods are seen in the field as stubs (presumably), and can cause |
| drivers to fail if they expect a return value. Lin Ming. |
| |
| Allow multiple backslashes as root prefixes in namepaths. In a fully |
| qualified namepath, allow multiple backslash prefixes. This can happen |
| (and |
| is seen in the field) because of the use of a double-backslash in strings |
| (since backslash is the escape character) causing confusion. ACPICA BZ |
| 739 |
| Lin Ming. |
| |
| Emit a warning if two different FACS or DSDT tables are discovered in the |
| FADT. Checks if there are two valid but different addresses for the FACS |
| and |
| DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) |
| |
| Consolidated the method argument count validation code. Merged the code |
| that |
| validates control method argument counts into the predefined validation |
| module. Eliminates possible multiple warnings for incorrect argument |
| counts. |
| |
| Implemented ACPICA example code. Includes code for ACPICA initialization, |
| handler installation, and calling a control method. Available at |
| source/tools/examples. |
| |
| Added a global pointer for FACS table to simplify internal FACS access. |
| Use |
| the global pointer instead of using AcpiGetTableByIndex for each FACS |
| access. |
| This simplifies the code for the Global Lock and the Firmware Waking |
| Vector(s). |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total |
| Debug Version: 155.8K Code, 49.1K Data, 204.9K Total |
| Current Release: |
| Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total |
| Debug Version: 156.4K Code, 49.4K Data, 205.8K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Improved disassembly of external method calls. Added the -e option |
| to |
| allow the inclusion of additional ACPI tables to help with the |
| disassembly |
| of |
| method invocations and the generation of external declarations during the |
| disassembly. Certain external method invocations cannot be disassembled |
| properly without the actual declaration of the method. Use the -e option |
| to |
| include the table where the external method(s) are actually declared. |
| Most |
| useful for disassembling SSDTs that make method calls back to the master |
| DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl |
| -d |
| -e dsdt.aml ssdt1.aml |
| |
| iASL: Fix to allow references to aliases within ASL namepaths. Fixes a |
| problem where the use of an alias within a namepath would result in a not |
| found error or cause the compiler to fault. Also now allows forward |
| references from the Alias operator itself. ACPICA BZ 738. |
| |
| ---------------------------------------- |
| 26 September 2008. Summary of changes for version 20080926: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Designed and implemented a mechanism to validate predefined ACPI methods |
| and |
| objects. This code validates the predefined ACPI objects (objects whose |
| names |
| start with underscore) that appear in the namespace, at the time they are |
| evaluated. The argument count and the type of the returned object are |
| validated against the ACPI specification. The purpose of this validation |
| is |
| to detect problems with the BIOS-implemented predefined ACPI objects |
| before |
| the results are returned to the ACPI-related drivers. Future enhancements |
| may |
| include actual repair of incorrect return objects where possible. Two new |
| files are nspredef.c and acpredef.h. |
| |
| Fixed a fault in the AML parser if a memory allocation fails during the |
| Op |
| completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. |
| |
| Fixed an issue with implicit return compatibility. This change improves |
| the |
| implicit return mechanism to be more compatible with the MS interpreter. |
| Lin |
| Ming, ACPICA BZ 349. |
| |
| Implemented support for zero-length buffer-to-string conversions. Allow |
| zero |
| length strings during interpreter buffer-to-string conversions. For |
| example, |
| during the ToDecimalString and ToHexString operators, as well as implicit |
| conversions. Fiodor Suietov, ACPICA BZ 585. |
| |
| Fixed two possible memory leaks in the error exit paths of |
| AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions |
| are |
| similar in that they use a stack of state objects in order to eliminate |
| recursion. The stack must be fully unwound and deallocated if an error |
| occurs. Lin Ming. ACPICA BZ 383. |
| |
| Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the |
| global |
| ACPI register table. This bit does not exist and is unused. Lin Ming, Bob |
| Moore ACPICA BZ 442. |
| |
| Removed the obsolete version number in module headers. Removed the |
| "$Revision" number that appeared in each module header. This version |
| number |
| was useful under SourceSafe and CVS, but has no meaning under git. It is |
| not |
| only incorrect, it could also be misleading. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total |
| Debug Version: 153.7K Code, 48.2K Data, 201.9K Total |
| Current Release: |
| Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total |
| Debug Version: 155.8K Code, 49.1K Data, 204.9K Total |
| |
| ---------------------------------------- |
| 29 August 2008. Summary of changes for version 20080829: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type |
| Reference. Changes include the elimination of cheating on the Object |
| field |
| for the DdbHandle subtype, addition of a reference class field to |
| differentiate the various reference types (instead of an AML opcode), and |
| the |
| cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 |
| |
| Reduce an error to a warning for an incorrect method argument count. |
| Previously aborted with an error if too few arguments were passed to a |
| control method via the external ACPICA interface. Now issue a warning |
| instead |
| and continue. Handles the case where the method inadvertently declares |
| too |
| many arguments, but does not actually use the extra ones. Applies mainly |
| to |
| the predefined methods. Lin Ming. Linux BZ 11032. |
| |
| Disallow the evaluation of named object types with no intrinsic value. |
| Return |
| AE_TYPE for objects that have no value and therefore evaluation is |
| undefined: |
| Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation |
| of |
| these types were allowed, but an exception would be generated at some |
| point |
| during the evaluation. Now, the error is generated up front. |
| |
| Fixed a possible memory leak in the AcpiNsGetExternalPathname function |
| (nsnames.c). Fixes a leak in the error exit path. |
| |
| Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These |
| debug |
| levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and |
| ACPI_EXCEPTION |
| interfaces. Also added ACPI_DB_EVENTS to correspond with the existing |
| ACPI_LV_EVENTS. |
| |
| Removed obsolete and/or unused exception codes from the acexcep.h header. |
| There is the possibility that certain device drivers may be affected if |
| they |
| use any of these exceptions. |
| |
| The ACPICA documentation has been added to the public git source tree, |
| under |
| acpica/documents. Included are the ACPICA programmer reference, the iASL |
| compiler reference, and the changes.txt release logfile. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total |
| Debug Version: 153.9K Code, 48.4K Data, 202.3K Total |
| Current Release: |
| Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total |
| Debug Version: 153.7K Code, 48.2K Data, 201.9K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 |
| defines _SCP with 3 arguments. Previous versions defined it with only 1 |
| argument. iASL now allows both definitions. |
| |
| iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for |
| zero- |
| length subtables when disassembling ACPI tables. Also fixed a couple of |
| errors where a full 16-bit table type field was not extracted from the |
| input |
| properly. |
| |
| acpisrc: Improve comment counting mechanism for generating source code |
| statistics. Count first and last lines of multi-line comments as |
| whitespace, |
| not comment lines. Handle Linux legal header in addition to standard |
| acpica |
| header. |
| |
| ---------------------------------------- |
| |
| 29 July 2008. Summary of changes for version 20080729: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fix a possible deadlock in the GPE dispatch. Remove call to |
| AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will |
| attempt |
| to acquire the GPE lock but can deadlock since the GPE lock is already |
| held |
| at dispatch time. This code was introduced in version 20060831 as a |
| response |
| to Linux BZ 6881 and has since been removed from Linux. |
| |
| Add a function to dereference returned reference objects. Examines the |
| return |
| object from a call to AcpiEvaluateObject. Any Index or RefOf references |
| are |
| automatically dereferenced in an attempt to return something useful |
| (these |
| reference types cannot be converted into an external ACPI_OBJECT.) |
| Provides |
| MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 |
| |
| x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new |
| subtables for the MADT and one new subtable for the SRAT. Includes |
| disassembler and AcpiSrc support. Data from the Intel 64 Architecture |
| x2APIC |
| Specification, June 2008. |
| |
| Additional error checking for pathname utilities. Add error check after |
| all |
| calls to AcpiNsGetPathnameLength. Add status return from |
| AcpiNsBuildExternalPath and check after all calls. Add parameter |
| validation |
| to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. |
| |
| Return status from the global init function AcpiUtGlobalInitialize. This |
| is |
| used by both the kernel subsystem and the utilities such as iASL |
| compiler. |
| The function could possibly fail when the caches are initialized. Yang |
| Yi. |
| |
| Add a function to decode reference object types to strings. Created for |
| improved error messages. |
| |
| Improve object conversion error messages. Better error messages during |
| object |
| conversion from internal to the external ACPI_OBJECT. Used for external |
| calls |
| to AcpiEvaluateObject. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total |
| Debug Version: 153.5K Code, 48.2K Data, 201.7K Total |
| Current Release: |
| Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total |
| Debug Version: 153.9K Code, 48.4K Data, 202.3K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Debugger: fix a possible hang when evaluating non-methods. Fixes a |
| problem |
| introduced in version 20080701. If the object being evaluated (via |
| execute |
| command) is not a method, the debugger can hang while trying to obtain |
| non- |
| existent parameters. |
| |
| iASL: relax error for using reserved "_T_x" identifiers. These names can |
| appear in a disassembled ASL file if they were emitted by the original |
| compiler. Instead of issuing an error or warning and forcing the user to |
| manually change these names, issue a remark instead. |
| |
| iASL: error if named object created in while loop. Emit an error if any |
| named |
| object is created within a While loop. If allowed, this code will |
| generate |
| a |
| run-time error on the second iteration of the loop when an attempt is |
| made |
| to |
| create the same named object twice. ACPICA bugzilla 730. |
| |
| iASL: Support absolute pathnames for include files. Add support for |
| absolute |
| pathnames within the Include operator. previously, only relative |
| pathnames |
| were supported. |
| |
| iASL: Enforce minimum 1 interrupt in interrupt macro and Resource |
| Descriptor. |
| The ACPI spec requires one interrupt minimum. BZ 423 |
| |
| iASL: Handle a missing ResourceSource arg, with a present SourceIndex. |
| Handles the case for the Interrupt Resource Descriptor where |
| the ResourceSource argument is omitted but ResourceSourceIndex |
| is present. Now leave room for the Index. BZ 426 |
| |
| iASL: Prevent error message if CondRefOf target does not exist. Fixes |
| cases |
| where an error message is emitted if the target does not exist. BZ 516 |
| |
| iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option |
| (get ACPI tables on Windows). This was apparently broken in version |
| 20070919. |
| |
| AcpiXtract: Handle EOF while extracting data. Correctly handle the case |
| where |
| the EOF happens immediately after the last table in the input file. Print |
| completion message. Previously, no message was displayed in this case. |
| |
| ---------------------------------------- |
| 01 July 2008. Summary of changes for version 20080701: |
| |
| 0) Git source tree / acpica.org |
| |
| Fixed a problem where a git-clone from http would not transfer the entire |
| source tree. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one |
| enable bit. Now performs a read-change-write of the enable register |
| instead |
| of simply writing out the cached enable mask. This will prevent |
| inadvertent |
| enabling of GPEs if a rogue GPE is received during initialization (before |
| GPE |
| handlers are installed.) |
| |
| Implemented a copy for dynamically loaded tables. Previously, dynamically |
| loaded tables were simply mapped - but on some machines this memory is |
| corrupted after suspend. Now copy the table to a local buffer. For the |
| OpRegion case, added checksum verify. Use the table length from the table |
| header, not the region length. For the Buffer case, use the table length |
| also. Dennis Noordsij, Bob Moore. BZ 10734 |
| |
| Fixed a problem where the same ACPI table could not be dynamically loaded |
| and |
| unloaded more than once. Without this change, a table cannot be loaded |
| again |
| once it has been loaded/unloaded one time. The current mechanism does not |
| unregister a table upon an unload. During a load, if the same table is |
| found, |
| this no longer returns an exception. BZ 722 |
| |
| Fixed a problem where the wrong descriptor length was calculated for the |
| EndTag descriptor in 64-bit mode. The "minimal" descriptors such as |
| EndTag |
| are calculated as 12 bytes long, but the actual length in the internal |
| descriptor is 16 because of the round-up to 8 on the 64-bit build. |
| Reported |
| by Linn Crosetto. BZ 728 |
| |
| Fixed a possible memory leak in the Unload operator. The DdbHandle |
| returned |
| by Load() did not have its reference count decremented during unload, |
| leading |
| to a memory leak. Lin Ming. BZ 727 |
| |
| Fixed a possible memory leak when deleting thermal/processor objects. Any |
| associated notify handlers (and objects) were not being deleted. Fiodor |
| Suietov. BZ 506 |
| |
| Fixed the ordering of the ASCII names in the global mutex table to match |
| the |
| actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug |
| only. |
| Vegard Nossum. BZ 726 |
| |
| Enhanced the AcpiGetObjectInfo interface to return the number of required |
| arguments if the object is a control method. Added this call to the |
| debugger |
| so the proper number of default arguments are passed to a method. This |
| prevents a warning when executing methods from AcpiExec. |
| |
| Added a check for an invalid handle in AcpiGetObjectInfo. Return |
| AE_BAD_PARAMETER if input handle is invalid. BZ 474 |
| |
| Fixed an extraneous warning from exconfig.c on the 64-bit build. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total |
| Debug Version: 153.0K Code, 48.2K Data, 201.2K Total |
| Current Release: |
| Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total |
| Debug Version: 153.5K Code, 48.2K Data, 201.7K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both |
| resource descriptor names. |
| |
| iASL: Detect invalid ASCII characters in input (windows version). Removed |
| the |
| "-CF" flag from the flex compile, enables correct detection of non-ASCII |
| characters in the input. BZ 441 |
| |
| iASL: Eliminate warning when result of LoadTable is not used. Eliminate |
| the |
| "result of operation not used" warning when the DDB handle returned from |
| LoadTable is not used. The warning is not needed. BZ 590 |
| |
| AcpiExec: Add support for dynamic table load/unload. Now calls _CFG |
| method |
| to |
| pass address of table to the AML. Added option to disable OpRegion |
| simulation |
| to allow creation of an OpRegion with a real address that was passed to |
| _CFG. |
| All of this allows testing of the Load and Unload operators from |
| AcpiExec. |
| |
| Debugger: update tables command for unloaded tables. Handle unloaded |
| tables |
| and use the standard table header output routine. |
| |
| ---------------------------------------- |
| 09 June 2008. Summary of changes for version 20080609: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a workaround for reversed _PRT entries. A significant number |
| of |
| BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This |
| change dynamically detects and repairs this problem. Provides |
| compatibility |
| with MS ACPI. BZ 6859 |
| |
| Simplified the internal ACPI hardware interfaces to eliminate the locking |
| flag parameter from Register Read/Write. Added a new external interface, |
| AcpiGetRegisterUnlocked. |
| |
| Fixed a problem where the invocation of a GPE control method could hang. |
| This |
| was a regression introduced in 20080514. The new method argument count |
| validation mechanism can enter an infinite loop when a GPE method is |
| dispatched. Problem fixed by removing the obsolete code that passed GPE |
| block |
| information to the notify handler via the control method parameter |
| pointer. |
| |
| Fixed a problem where the _SST execution status was incorrectly returned |
| to |
| the caller of AcpiEnterSleepStatePrep. This was a regression introduced |
| in |
| 20080514. _SST is optional and a NOT_FOUND exception should never be |
| returned. BZ 716 |
| |
| Fixed a problem where a deleted object could be accessed from within the |
| AML |
| parser. This was a regression introduced in version 20080123 as a fix for |
| the |
| Unload operator. Lin Ming. BZ 10669 |
| |
| Cleaned up the debug operand dump mechanism. Eliminated unnecessary |
| operands |
| and eliminated the use of a negative index in a loop. Operands are now |
| displayed in the correct order, not backwards. This also fixes a |
| regression |
| introduced in 20080514 on 64-bit systems where the elimination of |
| ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ |
| 715 |
| |
| Fixed a possible memory leak in EvPciConfigRegionSetup where the error |
| exit |
| path did not delete a locally allocated structure. |
| |
| Updated definitions for the DMAR and SRAT tables to synchronize with the |
| current specifications. Includes disassembler support. |
| |
| Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect |
| loop termination value was used. Loop terminated on iteration early, |
| missing |
| one mutex. Linn Crosetto |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total |
| Debug Version: 153.3K Code, 48.3K Data, 201.6K Total |
| Current Release: |
| Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total |
| Debug Version: 153.0K Code, 48.2K Data, 201.2K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Implemented support for EisaId() within _CID objects. Now |
| disassemble integer _CID objects back to EisaId invocations, including |
| multiple integers within _CID packages. Includes single-step support for |
| debugger also. |
| |
| Disassembler: Added support for DMAR and SRAT table definition changes. |
| |
| ---------------------------------------- |
| 14 May 2008. Summary of changes for version 20080514: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where GPEs were enabled too early during the ACPICA |
| initialization. This could lead to "handler not installed" errors on some |
| machines. Moved GPE enable until after _REG/_STA/_INI methods are run. |
| This |
| ensures that all operation regions and devices throughout the namespace |
| have |
| been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. |
| |
| Implemented a change to the enter sleep code. Moved execution of the _GTS |
| method to just before setting sleep enable bit. The execution was moved |
| from |
| AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed |
| immediately before the SLP_EN bit is set, as per the ACPI specification. |
| Luming Yu, BZ 1653. |
| |
| Implemented a fix to disable unknown GPEs (2nd version). Now always |
| disable |
| the GPE, even if ACPICA thinks that that it is already disabled. It is |
| possible that the AML or some other code has enabled the GPE unbeknownst |
| to |
| the ACPICA code. |
| |
| Fixed a problem with the Field operator where zero-length fields would |
| return |
| an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length |
| ASL |
| field declarations in Field(), BankField(), and IndexField(). BZ 10606. |
| |
| Implemented a fix for the Load operator, now load the table at the |
| namespace |
| root. This reverts a change introduced in version 20071019. The table is |
| now |
| loaded at the namespace root even though this goes against the ACPI |
| specification. This provides compatibility with other ACPI |
| implementations. |
| The ACPI specification will be updated to reflect this in ACPI 4.0. Lin |
| Ming. |
| |
| Fixed a problem where ACPICA would not Load() tables with unusual |
| signatures. |
| Now ignore ACPI table signature for Load() operator. Only "SSDT" is |
| acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. |
| Therefore, signature validation is worthless. Apparently MS ACPI accepts |
| such |
| signatures, ACPICA must be compatible. BZ 10454. |
| |
| Fixed a possible negative array index in AcpiUtValidateException. Added |
| NULL |
| fields to the exception string arrays to eliminate a -1 subtraction on |
| the |
| SubStatus field. |
| |
| Updated the debug tracking macros to reduce overall code and data size. |
| Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings |
| instead of pointers to static strings. Jan Beulich and Bob Moore. |
| |
| Implemented argument count checking in control method invocation via |
| AcpiEvaluateObject. Now emit an error if too few arguments, warning if |
| too |
| many. This applies only to extern programmatic control method execution, |
| not |
| method-to-method calls within the AML. Lin Ming. |
| |
| Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is |
| no |
| longer needed, especially with the removal of 16-bit support. It was |
| replaced |
| mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 |
| bit |
| on |
| 32/64-bit platforms is required. |
| |
| Added the C const qualifier for appropriate string constants -- mostly |
| MODULE_NAME and printf format strings. Jan Beulich. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has a |
| much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total |
| Debug Version: 159.4K Code, 64.4K Data, 223.8K Total |
| Current Release: |
| Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total |
| Debug Version: 153.3K Code, 48.3K Data, 201.6K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented ACPI table revision ID validation in the disassembler. Zero |
| is |
| always invalid. For DSDTs, the ID controls the interpreter integer width. |
| 1 |
| means 32-bit and this is unusual. 2 or greater is 64-bit. |
| |
| ---------------------------------------- |
| 21 March 2008. Summary of changes for version 20080321: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented an additional change to the GPE support in order to suppress |
| spurious or stray GPEs. The AcpiEvDisableGpe function will now |
| permanently |
| disable incoming GPEs that are neither enabled nor disabled -- meaning |
| that |
| the GPE is unknown to the system. This should prevent future interrupt |
| floods |
| from that GPE. BZ 6217 (Zhang Rui) |
| |
| Fixed a problem where NULL package elements were not returned to the |
| AcpiEvaluateObject interface correctly. The element was simply ignored |
| instead of returning a NULL ACPI_OBJECT package element, potentially |
| causing |
| a buffer overflow and/or confusing the caller who expected a fixed number |
| of |
| elements. BZ 10132 (Lin Ming, Bob Moore) |
| |
| Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, |
| Dword, |
| Qword), Field, BankField, and IndexField operators when invoked from |
| inside |
| an executing control method. In this case, these operators created |
| namespace |
| nodes that were incorrectly left marked as permanent nodes instead of |
| temporary nodes. This could cause a problem if there is race condition |
| between an exiting control method and a running namespace walk. (Reported |
| by |
| Linn Crosetto) |
| |
| Fixed a problem where the CreateField and CreateXXXField operators would |
| incorrectly allow duplicate names (the name of the field) with no |
| exception |
| generated. |
| |
| Implemented several changes for Notify handling. Added support for new |
| Notify |
| values (ACPI 2.0+) and improved the Notify debug output. Notify on |
| PowerResource objects is no longer allowed, as per the ACPI |
| specification. |
| (Bob Moore, Zhang Rui) |
| |
| All Reference Objects returned via the AcpiEvaluateObject interface are |
| now |
| marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved |
| for |
| NULL objects - either NULL package elements or unresolved named |
| references. |
| |
| Fixed a problem where an extraneous debug message was produced for |
| package |
| objects (when debugging enabled). The message "Package List length larger |
| than NumElements count" is now produced in the correct case, and is now |
| an |
| error message rather than a debug message. Added a debug message for the |
| opposite case, where NumElements is larger than the Package List (the |
| package |
| will be padded out with NULL elements as per the ACPI spec.) |
| |
| Implemented several improvements for the output of the ASL "Debug" object |
| to |
| clarify and keep all data for a given object on one output line. |
| |
| Fixed two size calculation issues with the variable-length Start |
| Dependent |
| resource descriptor. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total |
| Debug Version: 158.9K Code, 64.0K Data, 222.9K Total |
| Current Release: |
| Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total |
| Debug Version: 159.4K Code, 64.4K Data, 223.8K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a problem with the use of the Switch operator where execution of |
| the |
| containing method by multiple concurrent threads could cause an |
| AE_ALREADY_EXISTS exception. This is caused by the fact that there is no |
| actual Switch opcode, it must be simulated with local named temporary |
| variables and if/else pairs. The solution chosen was to mark any method |
| that |
| uses Switch as Serialized, thus preventing multiple thread entries. BZ |
| 469. |
| |
| ---------------------------------------- |
| 13 February 2008. Summary of changes for version 20080213: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented another MS compatibility design change for GPE/Notify |
| handling. |
| GPEs are now cleared/enabled asynchronously to allow all pending notifies |
| to |
| complete first. It is expected that the OSL will queue the enable request |
| behind all pending notify requests (may require changes to the local host |
| OSL |
| in AcpiOsExecute). Alexey Starikovskiy. |
| |
| Fixed a problem where buffer and package objects passed as arguments to a |
| control method via the external AcpiEvaluateObject interface could cause |
| an |
| AE_AML_INTERNAL exception depending on the order and type of operators |
| executed by the target control method. |
| |
| Fixed a problem where resource descriptor size optimization could cause a |
| problem when a _CRS resource template is passed to a _SRS method. The |
| _SRS |
| resource template must use the same descriptors (with the same size) as |
| returned from _CRS. This change affects the following resource |
| descriptors: |
| IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ |
| 9487) |
| |
| Fixed a problem where a CopyObject to RegionField, BankField, and |
| IndexField |
| objects did not perform an implicit conversion as it should. These types |
| must |
| retain their initial type permanently as per the ACPI specification. |
| However, |
| a CopyObject to all other object types should not perform an implicit |
| conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 |
| |
| Fixed a problem with the AcpiGetDevices interface where the mechanism to |
| match device CIDs did not examine the entire list of available CIDs, but |
| instead aborted on the first non-matching CID. Andrew Patterson. |
| |
| Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro |
| was |
| inadvertently changed to return a 16-bit value instead of a 32-bit value, |
| truncating the upper dword of a 64-bit value. This macro is only used to |
| display debug output, so no incorrect calculations were made. Also, |
| reimplemented the macro so that a 64-bit shift is not performed by |
| inefficient compilers. |
| |
| Added missing va_end statements that should correspond with each va_start |
| statement. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total |
| Debug Version: 159.0K Code, 63.8K Data, 222.8K Total |
| Current Release: |
| Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total |
| Debug Version: 158.9K Code, 64.0K Data, 222.9K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented full disassembler support for the following new ACPI tables: |
| BERT, EINJ, and ERST. Implemented partial disassembler support for the |
| complicated HEST table. These tables support the Windows Hardware Error |
| Architecture (WHEA). |
| |
| ---------------------------------------- |
| 23 January 2008. Summary of changes for version 20080123: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added the 2008 copyright to all module headers and signons. This affects |
| virtually every file in the ACPICA core subsystem, the iASL compiler, and |
| the tools/utilities. |
| |
| Fixed a problem with the SizeOf operator when used with Package and |
| Buffer |
| objects. These objects have deferred execution for some arguments, and |
| the |
| execution is now completed before the SizeOf is executed. This problem |
| caused |
| unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) |
| BZ |
| 9558 |
| |
| Implemented an enhancement to the interpreter "slack mode". In the |
| absence |
| of |
| an explicit return or an implicitly returned object from the last |
| executed |
| opcode, a control method will now implicitly return an integer of value 0 |
| for |
| Microsoft compatibility. (Lin Ming) BZ 392 |
| |
| Fixed a problem with the Load operator where an exception was not |
| returned |
| in |
| the case where the table is already loaded. (Lin Ming) BZ 463 |
| |
| Implemented support for the use of DDBHandles as an Indexed Reference, as |
| per |
| the ACPI spec. (Lin Ming) BZ 486 |
| |
| Implemented support for UserTerm (Method invocation) for the Unload |
| operator |
| as per the ACPI spec. (Lin Ming) BZ 580 |
| |
| Fixed a problem with the LoadTable operator where the OemId and |
| OemTableId |
| input strings could cause unexpected failures if they were shorter than |
| the |
| maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 |
| |
| Implemented support for UserTerm (Method invocation) for the Unload |
| operator |
| as per the ACPI spec. (Lin Ming) BZ 580 |
| |
| Implemented header file support for new ACPI tables - BERT, ERST, EINJ, |
| HEST, |
| IBFT, UEFI, WDAT. Disassembler support is forthcoming. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total |
| Debug Version: 158.6K Code, 63.8K Data, 222.4K Total |
| Current Release: |
| Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total |
| Debug Version: 159.0K Code, 63.8K Data, 222.8K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented support in the disassembler for checksum validation on |
| incoming |
| binary DSDTs and SSDTs. If incorrect, a message is displayed within the |
| table |
| header dump at the start of the disassembly. |
| |
| Implemented additional debugging information in the namespace listing |
| file |
| created during compilation. In addition to the namespace hierarchy, the |
| full |
| pathname to each namespace object is displayed. |
| |
| Fixed a problem with the disassembler where invalid ACPI tables could |
| cause |
| faults or infinite loops. |
| |
| Fixed an unexpected parse error when using the optional "parameter types" |
| list in a control method declaration. (Lin Ming) BZ 397 |
| |
| Fixed a problem where two External declarations with the same name did |
| not |
| cause an error (Lin Ming) BZ 509 |
| |
| Implemented support for full TermArgs (adding Argx, Localx and method |
| invocation) for the ParameterData parameter to the LoadTable operator. |
| (Lin |
| Ming) BZ 583,587 |
| |
| ---------------------------------------- |
| 19 December 2007. Summary of changes for version 20071219: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented full support for deferred execution for the TermArg string |
| arguments for DataTableRegion. This enables forward references and full |
| operand resolution for the three string arguments. Similar to |
| OperationRegion |
| deferred argument execution.) Lin Ming. BZ 430 |
| |
| Implemented full argument resolution support for the BankValue argument |
| to |
| BankField. Previously, only constants were supported, now any TermArg may |
| be |
| used. Lin Ming BZ 387, 393 |
| |
| Fixed a problem with AcpiGetDevices where the search of a branch of the |
| device tree could be terminated prematurely. In accordance with the ACPI |
| specification, the search down the current branch is terminated if a |
| device |
| is both not present and not functional (instead of just not present.) |
| Yakui |
| Zhao. |
| |
| Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly |
| if |
| the underlying AML code changed the GPE enable registers. Now, any |
| unknown |
| incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately |
| disabled |
| instead of simply ignored. Rui Zhang. |
| |
| Fixed a problem with Index Fields where the Index register was |
| incorrectly |
| limited to a maximum of 32 bits. Now any size may be used. |
| |
| Fixed a couple memory leaks associated with "implicit return" objects |
| when |
| the AML Interpreter slack mode is enabled. Lin Ming BZ 349 |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total |
| Debug Version: 157.9K Code, 63.6K Data, 221.5K Total |
| Current Release: |
| Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total |
| Debug Version: 158.6K Code, 63.8K Data, 222.4K Total |
| |
| ---------------------------------------- |
| 14 November 2007. Summary of changes for version 20071114: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented event counters for each of the Fixed Events, the ACPI SCI |
| (interrupt) itself, and control methods executed. Named |
| AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. |
| These |
| should be useful for debugging and statistics. |
| |
| Implemented a new external interface, AcpiGetStatistics, to retrieve the |
| contents of the various event counters. Returns the current values for |
| AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and |
| AcpiMethodCount. The interface can be expanded in the future if new |
| counters |
| are added. Device drivers should use this interface rather than access |
| the |
| counters directly. |
| |
| Fixed a problem with the FromBCD and ToBCD operators. With some |
| compilers, |
| the ShortDivide function worked incorrectly, causing problems with the |
| BCD |
| functions with large input values. A truncation from 64-bit to 32-bit |
| inadvertently occurred. Internal BZ 435. Lin Ming |
| |
| Fixed a problem with Index references passed as method arguments. |
| References |
| passed as arguments to control methods were dereferenced immediately |
| (before |
| control was passed to the called method). The references are now |
| correctly |
| passed directly to the called method. BZ 5389. Lin Ming |
| |
| Fixed a problem with CopyObject used in conjunction with the Index |
| operator. |
| The reference was incorrectly dereferenced before the copy. The reference |
| is |
| now correctly copied. BZ 5391. Lin Ming |
| |
| Fixed a problem with Control Method references within Package objects. |
| These |
| references are now correctly generated. This completes the package |
| construction overhaul that began in version 20071019. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total |
| Debug Version: 157.2K Code, 63.4K Data, 220.6K Total |
| Current Release: |
| Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total |
| Debug Version: 157.9K Code, 63.6K Data, 221.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| The AcpiExec utility now installs handlers for all of the predefined |
| Operation Region types. New types supported are: PCI_Config, CMOS, and |
| PCIBARTarget. |
| |
| Fixed a problem with the 64-bit version of AcpiExec where the extended |
| (64- |
| bit) address fields for the DSDT and FACS within the FADT were not being |
| used, causing truncation of the upper 32-bits of these addresses. Lin |
| Ming |
| and Bob Moore |
| |
| ---------------------------------------- |
| 19 October 2007. Summary of changes for version 20071019: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem with the Alias operator when the target of the alias is a |
| named ASL operator that opens a new scope -- Scope, Device, |
| PowerResource, |
| Processor, and ThermalZone. In these cases, any children of the original |
| operator could not be accessed via the alias, potentially causing |
| unexpected |
| AE_NOT_FOUND exceptions. (BZ 9067) |
| |
| Fixed a problem with the Package operator where all named references were |
| created as object references and left otherwise unresolved. According to |
| the |
| ACPI specification, a Package can only contain Data Objects or references |
| to |
| control methods. The implication is that named references to Data Objects |
| (Integer, Buffer, String, Package, BufferField, Field) should be resolved |
| immediately upon package creation. This is the approach taken with this |
| change. References to all other named objects (Methods, Devices, Scopes, |
| etc.) are all now properly created as reference objects. (BZ 5328) |
| |
| Reverted a change to Notify handling that was introduced in version |
| 20070508. This version changed the Notify handling from asynchronous to |
| fully synchronous (Device driver Notify handling with respect to the |
| Notify |
| ASL operator). It was found that this change caused more problems than it |
| solved and was removed by most users. |
| |
| Fixed a problem with the Increment and Decrement operators where the type |
| of |
| the target object could be unexpectedly and incorrectly changed. (BZ 353) |
| Lin Ming. |
| |
| Fixed a problem with the Load and LoadTable operators where the table |
| location within the namespace was ignored. Instead, the table was always |
| loaded into the root or current scope. Lin Ming. |
| |
| Fixed a problem with the Load operator when loading a table from a buffer |
| object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) |
| |
| Fixed a problem with the Debug object where a store of a DdbHandle |
| reference |
| object to the Debug object could cause a fault. |
| |
| Added a table checksum verification for the Load operator, in the case |
| where |
| the load is from a buffer. (BZ 578). |
| |
| Implemented additional parameter validation for the LoadTable operator. |
| The |
| length of the input strings SignatureString, OemIdString, and OemTableId |
| are |
| now checked for maximum lengths. (BZ 582) Lin Ming. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total |
| Debug Version: 156.7K Code, 63.2K Data, 219.9K Total |
| Current Release: |
| Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total |
| Debug Version: 157.2K Code, 63.4K Data, 220.6K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem where if a single file was specified and the file did not |
| exist, no error message was emitted. (Introduced with wildcard support in |
| version 20070917.) |
| |
| ---------------------------------------- |
| 19 September 2007. Summary of changes for version 20070919: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Designed and implemented new external interfaces to install and remove |
| handlers for ACPI table-related events. Current events that are defined |
| are |
| LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as |
| they are dynamically loaded and unloaded. See AcpiInstallTableHandler and |
| AcpiRemoveTableHandler. (Lin Ming and Bob Moore) |
| |
| Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag |
| (acpi_serialized option on Linux) could cause some systems to hang during |
| initialization. (Bob Moore) BZ 8171 |
| |
| Fixed a problem where objects of certain types (Device, ThermalZone, |
| Processor, PowerResource) can be not found if they are declared and |
| referenced from within the same control method (Lin Ming) BZ 341 |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total |
| Debug Version: 156.3K Code, 63.1K Data, 219.4K Total |
| Current Release: |
| Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total |
| Debug Version: 156.7K Code, 63.2K Data, 219.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support to allow multiple files to be compiled/disassembled |
| in |
| a |
| single invocation. This includes command line wildcard support for both |
| the |
| Windows and Unix versions of the compiler. This feature simplifies the |
| disassembly and compilation of multiple ACPI tables in a single |
| directory. |
| |
| ---------------------------------------- |
| 08 May 2007. Summary of changes for version 20070508: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a Microsoft compatibility design change for the handling of |
| the |
| Notify AML operator. Previously, notify handlers were dispatched and |
| executed completely asynchronously in a deferred thread. The new design |
| still executes the notify handlers in a different thread, but the |
| original |
| thread that executed the Notify() now waits at a synchronization point |
| for |
| the notify handler to complete. Some machines depend on a synchronous |
| Notify |
| operator in order to operate correctly. |
| |
| Implemented support to allow Package objects to be passed as method |
| arguments to the external AcpiEvaluateObject interface. Previously, this |
| would return the AE_NOT_IMPLEMENTED exception. This feature had not been |
| implemented since there were no reserved control methods that required it |
| until recently. |
| |
| Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs |
| that |
| contained invalid non-zero values in reserved fields could cause later |
| failures because these fields have meaning in later revisions of the |
| FADT. |
| For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The |
| fields |
| are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) |
| |
| Fixed a problem where the Global Lock handle was not properly updated if |
| a |
| thread that acquired the Global Lock via executing AML code then |
| attempted |
| to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by |
| Joe |
| Liu. |
| |
| Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list |
| could be corrupted if the interrupt being removed was at the head of the |
| list. Reported by Linn Crosetto. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.9K Code, 63.1K Data, 219.0K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total |
| Debug Version: 156.3K Code, 63.1K Data, 219.4K Total |
| |
| ---------------------------------------- |
| 20 March 2007. Summary of changes for version 20070320: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a change to the order of interpretation and evaluation of AML |
| operand objects within the AML interpreter. The interpreter now evaluates |
| operands in the order that they appear in the AML stream (and the |
| corresponding ASL code), instead of in the reverse order (after the |
| entire |
| operand list has been parsed). The previous behavior caused several |
| subtle |
| incompatibilities with the Microsoft AML interpreter as well as being |
| somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. |
| |
| Implemented a change to the ACPI Global Lock support. All interfaces to |
| the |
| global lock now allow the same thread to acquire the lock multiple times. |
| This affects the AcpiAcquireGlobalLock external interface to the global |
| lock |
| as well as the internal use of the global lock to support AML fields -- a |
| control method that is holding the global lock can now simultaneously |
| access |
| AML fields that require global lock protection. Previously, in both |
| cases, |
| this would have resulted in an AE_ALREADY_ACQUIRED exception. The change |
| to |
| AcpiAcquireGlobalLock is of special interest to drivers for the Embedded |
| Controller. There is no change to the behavior of the AML Acquire |
| operator, |
| as this can already be used to acquire a mutex multiple times by the same |
| thread. BZ 8066. With assistance from Alexey Starikovskiy. |
| |
| Fixed a problem where invalid objects could be referenced in the AML |
| Interpreter after error conditions. During operand evaluation, ensure |
| that |
| the internal "Return Object" field is cleared on error and only valid |
| pointers are stored there. Caused occasional access to deleted objects |
| that |
| resulted in "large reference count" warning messages. Valery Podrezov. |
| |
| Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur |
| on |
| deeply nested control method invocations. BZ 7873, local BZ 487. Valery |
| Podrezov. |
| |
| Fixed an internal problem with the handling of result objects on the |
| interpreter result stack. BZ 7872. Valery Podrezov. |
| |
| Removed obsolete code that handled the case where AML_NAME_OP is the |
| target |
| of a reference (Reference.Opcode). This code was no longer necessary. BZ |
| 7874. Valery Podrezov. |
| |
| Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This |
| was |
| a |
| remnant from the previously discontinued 16-bit support. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.8K Code, 63.3K Data, 219.1K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.9K Code, 63.1K Data, 219.0K Total |
| |
| ---------------------------------------- |
| 26 January 2007. Summary of changes for version 20070126: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added the 2007 copyright to all module headers and signons. This affects |
| virtually every file in the ACPICA core subsystem, the iASL compiler, and |
| the utilities. |
| |
| Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable |
| during a table load. A bad pointer was passed in the case where the DSDT |
| is |
| overridden, causing a fault in this case. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.8K Code, 63.3K Data, 219.1K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.8K Code, 63.3K Data, 219.1K Total |
| |
| ---------------------------------------- |
| 15 December 2006. Summary of changes for version 20061215: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Support for 16-bit ACPICA has been completely removed since it is no |
| longer |
| necessary and it clutters the code. All 16-bit macros, types, and |
| conditional compiles have been removed, cleaning up and simplifying the |
| code |
| across the entire subsystem. DOS support is no longer needed since the |
| bootable Linux firmware kit is now available. |
| |
| The handler for the Global Lock is now removed during AcpiTerminate to |
| enable a clean subsystem restart, via the implementation of the |
| AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, |
| HP) |
| |
| Implemented enhancements to the multithreading support within the |
| debugger |
| to enable improved multithreading debugging and evaluation of the |
| subsystem. |
| (Valery Podrezov) |
| |
| Debugger: Enhanced the Statistics/Memory command to emit the total |
| (maximum) |
| memory used during the execution, as well as the maximum memory consumed |
| by |
| each of the various object types. (Valery Podrezov) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total |
| Debug Version: 155.2K Code, 63.1K Data, 218.3K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total |
| Debug Version: 155.8K Code, 63.3K Data, 219.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| AcpiExec: Implemented a new option (-m) to display full memory use |
| statistics upon subsystem/program termination. (Valery Podrezov) |
| |
| ---------------------------------------- |
| 09 November 2006. Summary of changes for version 20061109: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Optimized the Load ASL operator in the case where the source operand is |
| an |
| operation region. Simply map the operation region memory, instead of |
| performing a bytewise read. (Region must be of type SystemMemory, see |
| below.) |
| |
| Fixed the Load ASL operator for the case where the source operand is a |
| region field. A buffer object is also allowed as the source operand. BZ |
| 480 |
| |
| Fixed a problem where the Load ASL operator allowed the source operand to |
| be |
| an operation region of any type. It is now restricted to regions of type |
| SystemMemory, as per the ACPI specification. BZ 481 |
| |
| Additional cleanup and optimizations for the new Table Manager code. |
| |
| AcpiEnable will now fail if all of the required ACPI tables are not |
| loaded |
| (FADT, FACS, DSDT). BZ 477 |
| |
| Added #pragma pack(8/4) to acobject.h to ensure that the structures in |
| this |
| header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been |
| manually optimized to be aligned and will not work if it is byte-packed. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total |
| Debug Version: 155.4K Code, 63.1K Data, 218.5K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total |
| Debug Version: 155.2K Code, 63.1K Data, 218.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a problem where the presence of the _OSI predefined control method |
| within complex expressions could cause an internal compiler error. |
| |
| AcpiExec: Implemented full region support for multiple address spaces. |
| SpaceId is now part of the REGION object. BZ 429 |
| |
| ---------------------------------------- |
| 11 October 2006. Summary of changes for version 20061011: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed an AML interpreter performance enhancement for control method |
| execution. Previously a 2-pass parse/execution, control methods are now |
| completely parsed and executed in a single pass. This improves overall |
| interpreter performance by ~25%, reduces code size, and reduces CPU stack |
| use. (Valery Podrezov + interpreter changes in version 20051202 that |
| eliminated namespace loading during the pass one parse.) |
| |
| Implemented _CID support for PCI Root Bridge detection. If the _HID does |
| not |
| match the predefined PCI Root Bridge IDs, the _CID list (if present) is |
| now |
| obtained and also checked for an ID match. |
| |
| Implemented additional support for the PCI _ADR execution: upsearch until |
| a |
| device scope is found before executing _ADR. This allows PCI_Config |
| operation regions to be declared locally within control methods |
| underneath |
| PCI device objects. |
| |
| Fixed a problem with a possible race condition between threads executing |
| AcpiWalkNamespace and the AML interpreter. This condition was removed by |
| modifying AcpiWalkNamespace to (by default) ignore all temporary |
| namespace |
| entries created during any concurrent control method execution. An |
| additional namespace race condition is known to exist between |
| AcpiWalkNamespace and the Load/Unload ASL operators and is still under |
| investigation. |
| |
| Restructured the AML ParseLoop function, breaking it into several |
| subfunctions in order to reduce CPU stack use and improve |
| maintainability. |
| (Mikhail Kouzmich) |
| |
| AcpiGetHandle: Fix for parameter validation to detect invalid |
| combinations |
| of prefix handle and pathname. BZ 478 |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total |
| Debug Version: 154.6K Code, 63.0K Data, 217.6K Total |
| Current Release: |
| Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total |
| Debug Version: 155.4K Code, 63.1K Data, 218.5K Total |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Ported the -g option (get local ACPI tables) to the new ACPICA Table |
| Manager |
| to restore original behavior. |
| |
| ---------------------------------------- |
| 27 September 2006. Summary of changes for version 20060927: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. |
| These functions now use a spinlock for mutual exclusion and the interrupt |
| level indication flag is not needed. |
| |
| Fixed a problem with the Global Lock where the lock could appear to be |
| obtained before it is actually obtained. The global lock semaphore was |
| inadvertently created with one unit instead of zero units. (BZ 464) |
| Fiodor |
| Suietov. |
| |
| Fixed a possible memory leak and fault in AcpiExResolveObjectToValue |
| during |
| a read from a buffer or region field. (BZ 458) Fiodor Suietov. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total |
| Debug Version: 154.7K Code, 63.0K Data, 217.7K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total |
| Debug Version: 154.6K Code, 63.0K Data, 217.6K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a compilation problem with the pre-defined Resource Descriptor |
| field |
| names where an "object does not exist" error could be incorrectly |
| generated |
| if the parent ResourceTemplate pathname places the template within a |
| different namespace scope than the current scope. (BZ 7212) |
| |
| Fixed a problem where the compiler could hang after syntax errors |
| detected |
| in an ElseIf construct. (BZ 453) |
| |
| Fixed a problem with the AmlFilename parameter to the DefinitionBlock() |
| operator. An incorrect output filename was produced when this parameter |
| was |
| a null string (""). Now, the original input filename is used as the AML |
| output filename, with an ".aml" extension. |
| |
| Implemented a generic batch command mode for the AcpiExec utility |
| (execute |
| any AML debugger command) (Valery Podrezov). |
| |
| ---------------------------------------- |
| 12 September 2006. Summary of changes for version 20060912: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Enhanced the implementation of the "serialized mode" of the interpreter |
| (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is |
| specified, instead of creating a serialization semaphore per control |
| method, |
| the interpreter lock is simply no longer released before a blocking |
| operation during control method execution. This effectively makes the AML |
| Interpreter single-threaded. The overhead of a semaphore per-method is |
| eliminated. |
| |
| Fixed a regression where an error was no longer emitted if a control |
| method |
| attempts to create 2 objects of the same name. This once again returns |
| AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism |
| that |
| will dynamically serialize the control method to possible prevent future |
| errors. (BZ 440) |
| |
| Integrated a fix for a problem with PCI Express HID detection in the PCI |
| Config Space setup procedure. (BZ 7145) |
| |
| Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the |
| AcpiHwInitialize function - the FADT registers are now validated when the |
| table is loaded. |
| |
| Added two new warnings during FADT verification - 1) if the FADT is |
| larger |
| than the largest known FADT version, and 2) if there is a mismatch |
| between |
| a |
| 32-bit block address and the 64-bit X counterpart (when both are non- |
| zero.) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total |
| Debug Version: 154.9K Code, 62.6K Data, 217.5K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total |
| Debug Version: 154.7K Code, 63.0K Data, 217.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a problem with the implementation of the Switch() operator where |
| the |
| temporary variable was declared too close to the actual Switch, instead |
| of |
| at method level. This could cause a problem if the Switch() operator is |
| within a while loop, causing an error on the second iteration. (BZ 460) |
| |
| Disassembler - fix for error emitted for unknown type for target of scope |
| operator. Now, ignore it and continue. |
| |
| Disassembly of an FADT now verifies the input FADT and reports any errors |
| found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. |
| |
| Disassembly of raw data buffers with byte initialization data now |
| prefixes |
| each output line with the current buffer offset. |
| |
| Disassembly of ASF! table now includes all variable-length data fields at |
| the end of some of the subtables. |
| |
| The disassembler now emits a comment if a buffer appears to be a |
| ResourceTemplate, but cannot be disassembled as such because the EndTag |
| does |
| not appear at the very end of the buffer. |
| |
| AcpiExec - Added the "-t" command line option to enable the serialized |
| mode |
| of the AML interpreter. |
| |
| ---------------------------------------- |
| 31 August 2006. Summary of changes for version 20060831: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Miscellaneous fixes for the Table Manager: |
| - Correctly initialize internal common FADT for all 64-bit "X" fields |
| - Fixed a couple table mapping issues during table load |
| - Fixed a couple alignment issues for IA64 |
| - Initialize input array to zero in AcpiInitializeTables |
| - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, |
| AcpiGetTableByIndex |
| |
| Change for GPE support: when a "wake" GPE is received, all wake GPEs are |
| now |
| immediately disabled to prevent the waking GPE from firing again and to |
| prevent other wake GPEs from interrupting the wake process. |
| |
| Added the AcpiGpeCount global that tracks the number of processed GPEs, |
| to |
| be used for debugging systems with a large number of ACPI interrupts. |
| |
| Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in |
| both the ACPICA headers and the disassembler. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total |
| Debug Version: 154.6K Code, 62.3K Data, 216.9K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total |
| Debug Version: 154.9K Code, 62.6K Data, 217.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler support for the DMAR ACPI table. |
| |
| ---------------------------------------- |
| 23 August 2006. Summary of changes for version 20060823: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The Table Manager component has been completely redesigned and |
| reimplemented. The new design is much simpler, and reduces the overall |
| code |
| and data size of the kernel-resident ACPICA by approximately 5%. Also, it |
| is |
| now possible to obtain the ACPI tables very early during kernel |
| initialization, even before dynamic memory management is initialized. |
| (Alexey Starikovskiy, Fiodor Suietov, Bob Moore) |
| |
| Obsolete ACPICA interfaces: |
| |
| - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel |
| init |
| time). |
| - AcpiLoadTable: Not needed. |
| - AcpiUnloadTable: Not needed. |
| |
| New ACPICA interfaces: |
| |
| - AcpiInitializeTables: Must be called before the table manager can be |
| used. |
| - AcpiReallocateRootTable: Used to transfer the root table to dynamically |
| allocated memory after it becomes available. |
| - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI |
| tables |
| in the RSDT/XSDT. |
| |
| Other ACPICA changes: |
| |
| - AcpiGetTableHeader returns the actual mapped table header, not a copy. |
| Use |
| AcpiOsUnmapMemory to free this mapping. |
| - AcpiGetTable returns the actual mapped table. The mapping is managed |
| internally and must not be deleted by the caller. Use of this interface |
| causes no additional dynamic memory allocation. |
| - AcpiFindRootPointer: Support for physical addressing has been |
| eliminated, |
| it appeared to be unused. |
| - The interface to AcpiOsMapMemory has changed to be consistent with the |
| other allocation interfaces. |
| - The interface to AcpiOsGetRootPointer has changed to eliminate |
| unnecessary |
| parameters. |
| - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on |
| 64- |
| bit platforms. Was previously 64 bits on all platforms. |
| - The interface to the ACPI Global Lock acquire/release macros have |
| changed |
| slightly since ACPICA no longer keeps a local copy of the FACS with a |
| constructed pointer to the actual global lock. |
| |
| Porting to the new table manager: |
| |
| - AcpiInitializeTables: Must be called once, and can be called anytime |
| during the OS initialization process. It allows the host to specify an |
| area |
| of memory to be used to store the internal version of the RSDT/XSDT (root |
| table). This allows the host to access ACPI tables before memory |
| management |
| is initialized and running. |
| - AcpiReallocateRootTable: Can be called after memory management is |
| running |
| to copy the root table to a dynamically allocated array, freeing up the |
| scratch memory specified in the call to AcpiInitializeTables. |
| - AcpiSubsystemInitialize: This existing interface is independent of the |
| Table Manager, and does not have to be called before the Table Manager |
| can |
| be used, it only must be called before the rest of ACPICA can be used. |
| - ACPI Tables: Some changes have been made to the names and structure of |
| the |
| actbl.h and actbl1.h header files and may require changes to existing |
| code. |
| For example, bitfields have been completely removed because of their lack |
| of |
| portability across C compilers. |
| - Update interfaces to the Global Lock acquire/release macros if local |
| versions are used. (see acwin.h) |
| |
| Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c |
| |
| New files: tbfind.c |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total |
| Debug Version: 161.0K Code, 65.1K Data, 226.1K Total |
| Current Release: |
| Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total |
| Debug Version: 154.6K Code, 62.3K Data, 216.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| No changes for this release. |
| |
| ---------------------------------------- |
| 21 July 2006. Summary of changes for version 20060721: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The full source code for the ASL test suite used to validate the iASL |
| compiler and the ACPICA core subsystem is being released with the ACPICA |
| source for the first time. The source is contained in a separate package |
| and |
| consists of over 1100 files that exercise all ASL/AML operators. The |
| package |
| should appear on the Intel/ACPI web site shortly. (Valery Podrezov, |
| Fiodor |
| Suietov) |
| |
| Completed a new design and implementation for support of the ACPI Global |
| Lock. On the OS side, the global lock is now treated as a standard AML |
| mutex. Previously, multiple OS threads could "acquire" the global lock |
| simultaneously. However, this could cause the BIOS to be starved out of |
| the |
| lock - especially in cases such as the Embedded Controller driver where |
| there is a tight coupling between the OS and the BIOS. |
| |
| Implemented an optimization for the ACPI Global Lock interrupt mechanism. |
| The Global Lock interrupt handler no longer queues the execution of a |
| separate thread to signal the global lock semaphore. Instead, the |
| semaphore |
| is signaled directly from the interrupt handler. |
| |
| Implemented support within the AML interpreter for package objects that |
| contain a larger AML length (package list length) than the package |
| element |
| count. In this case, the length of the package is truncated to match the |
| package element count. Some BIOS code apparently modifies the package |
| length |
| on the fly, and this change supports this behavior. Provides |
| compatibility |
| with the MS AML interpreter. (With assistance from Fiodor Suietov) |
| |
| Implemented a temporary fix for the BankValue parameter of a Bank Field |
| to |
| support all constant values, now including the Zero and One opcodes. |
| Evaluation of this parameter must eventually be converted to a full |
| TermArg |
| evaluation. A not-implemented error is now returned (temporarily) for |
| non- |
| constant values for this parameter. |
| |
| Fixed problem reports (Fiodor Suietov) integrated: |
| - Fix for premature object deletion after CopyObject on Operation Region |
| (BZ |
| 350) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total |
| Debug Version: 160.9K Code, 65.1K Data, 226.0K Total |
| Current Release: |
| Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total |
| Debug Version: 161.0K Code, 65.1K Data, 226.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| No changes for this release. |
| |
| ---------------------------------------- |
| 07 July 2006. Summary of changes for version 20060707: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers |
| that do not allow the initialization of address pointers within packed |
| structures - even though the hardware itself may support misaligned |
| transfers. Some of the debug data structures are packed by default to |
| minimize size. |
| |
| Added an error message for the case where AcpiOsGetThreadId() returns |
| zero. |
| A non-zero value is required by the core ACPICA code to ensure the proper |
| operation of AML mutexes and recursive control methods. |
| |
| The DSDT is now the only ACPI table that determines whether the AML |
| interpreter is in 32-bit or 64-bit mode. Not really a functional change, |
| but |
| the hooks for per-table 32/64 switching have been removed from the code. |
| A |
| clarification to the ACPI specification is forthcoming in ACPI 3.0B. |
| |
| Fixed a possible leak of an OwnerID in the error path of |
| AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID |
| deletion to a single place in AcpiTbUninstallTable to correct possible |
| leaks |
| when using the AcpiTbDeleteTablesByType interface (with assistance from |
| Lance Ortiz.) |
| |
| Fixed a problem with Serialized control methods where the semaphore |
| associated with the method could be over-signaled after multiple method |
| invocations. |
| |
| Fixed two issues with the locking of the internal namespace data |
| structure. |
| Both the Unload() operator and AcpiUnloadTable interface now lock the |
| namespace during the namespace deletion associated with the table unload |
| (with assistance from Linn Crosetto.) |
| |
| Fixed problem reports (Valery Podrezov) integrated: |
| - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) |
| |
| Fixed problem reports (Fiodor Suietov) integrated: |
| - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) |
| - On Address Space handler deletion, needless deactivation call (BZ 374) |
| - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ |
| 375) |
| - Possible memory leak, Notify sub-objects of Processor, Power, |
| ThermalZone |
| (BZ 376) |
| - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) |
| - Minimum Length of RSDT should be validated (BZ 379) |
| - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no |
| Handler (BZ (380) |
| - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type |
| loaded |
| (BZ 381) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total |
| Debug Version: 160.8K Code, 64.8K Data, 225.6K Total |
| Current Release: |
| Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total |
| Debug Version: 161.0K Code, 65.1K Data, 226.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed problem reports: |
| Compiler segfault when ASL contains a long (>1024) String declaration (BZ |
| 436) |
| |
| ---------------------------------------- |
| 23 June 2006. Summary of changes for version 20060623: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This |
| allows the type to be customized to the host OS for improved efficiency |
| (since a spinlock is usually a very small object.) |
| |
| Implemented support for "ignored" bits in the ACPI registers. According |
| to |
| the ACPI specification, these bits should be preserved when writing the |
| registers via a read/modify/write cycle. There are 3 bits preserved in |
| this |
| manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. |
| |
| Implemented the initial deployment of new OSL mutex interfaces. Since |
| some |
| host operating systems have separate mutex and semaphore objects, this |
| feature was requested. The base code now uses mutexes (and the new mutex |
| interfaces) wherever a binary semaphore was used previously. However, for |
| the current release, the mutex interfaces are defined as macros to map |
| them |
| to the existing semaphore interfaces. Therefore, no OSL changes are |
| required |
| at this time. (See acpiosxf.h) |
| |
| Fixed several problems with the support for the control method SyncLevel |
| parameter. The SyncLevel now works according to the ACPI specification |
| and |
| in concert with the Mutex SyncLevel parameter, since the current |
| SyncLevel |
| is a property of the executing thread. Mutual exclusion for control |
| methods |
| is now implemented with a mutex instead of a semaphore. |
| |
| Fixed three instances of the use of the C shift operator in the bitfield |
| support code (exfldio.c) to avoid the use of a shift value larger than |
| the |
| target data width. The behavior of C compilers is undefined in this case |
| and |
| can cause unpredictable results, and therefore the case must be detected |
| and |
| avoided. (Fiodor Suietov) |
| |
| Added an info message whenever an SSDT or OEM table is loaded dynamically |
| via the Load() or LoadTable() ASL operators. This should improve |
| debugging |
| capability since it will show exactly what tables have been loaded |
| (beyond |
| the tables present in the RSDT/XSDT.) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total |
| Debug Version: 160.2K Code, 64.7K Data, 224.9K Total |
| Current Release: |
| Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total |
| Debug Version: 160.8K Code, 64.8K Data, 225.6K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| No changes for this release. |
| |
| ---------------------------------------- |
| 08 June 2006. Summary of changes for version 20060608: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Converted the locking mutex used for the ACPI hardware to a spinlock. |
| This |
| change should eliminate all problems caused by attempting to acquire a |
| semaphore at interrupt level, and it means that all ACPICA external |
| interfaces that directly access the ACPI hardware can be safely called |
| from |
| interrupt level. OSL code that implements the semaphore interfaces should |
| be |
| able to eliminate any workarounds for being called at interrupt level. |
| |
| Fixed a regression introduced in 20060526 where the ACPI device |
| initialization could be prematurely aborted with an AE_NOT_FOUND if a |
| device |
| did not have an optional _INI method. |
| |
| Fixed an IndexField issue where a write to the Data Register should be |
| limited in size to the AccessSize (width) of the IndexField itself. (BZ |
| 433, |
| Fiodor Suietov) |
| |
| Fixed problem reports (Valery Podrezov) integrated: |
| - Allow store of ThermalZone objects to Debug object (BZ 5369/5370) |
| |
| Fixed problem reports (Fiodor Suietov) integrated: |
| - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) |
| |
| Removed four global mutexes that were obsolete and were no longer being |
| used. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total |
| Debug Version: 160.3K Code, 64.9K Data, 225.2K Total |
| Current Release: |
| Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total |
| Debug Version: 160.2K Code, 64.7K Data, 224.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Fixed a fault when using -g option (get tables from registry) on Windows |
| machines. |
| |
| Fixed problem reports integrated: |
| - Generate error if CreateField NumBits parameter is zero. (BZ 405) |
| - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor |
| Suietov) |
| - Global table revision override (-r) is ignored (BZ 413) |
| |
| ---------------------------------------- |
| 26 May 2006. Summary of changes for version 20060526: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Restructured, flattened, and simplified the internal interfaces for |
| namespace object evaluation - resulting in smaller code, less CPU stack |
| use, |
| and fewer interfaces. (With assistance from Mikhail Kouzmich) |
| |
| Fixed a problem with the CopyObject operator where the first parameter |
| was |
| not typed correctly for the parser, interpreter, compiler, and |
| disassembler. |
| Caused various errors and unexpected behavior. |
| |
| Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits |
| produced incorrect results with some C compilers. Since the behavior of C |
| compilers when the shift value is larger than the datatype width is |
| apparently not well defined, the interpreter now detects this condition |
| and |
| simply returns zero as expected in all such cases. (BZ 395) |
| |
| Fixed problem reports (Valery Podrezov) integrated: |
| - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) |
| - Allow interpreter to handle nested method declarations (BZ 5361) |
| |
| Fixed problem reports (Fiodor Suietov) integrated: |
| - AcpiTerminate doesn't free debug memory allocation list objects (BZ |
| 355) |
| - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ |
| 356) |
| - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) |
| - Resource Manager should return AE_TYPE for non-device objects (BZ 358) |
| - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) |
| - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) |
| - Incomplete cleanup branch in AcpiPsParseAml (BZ 361) |
| - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) |
| - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ |
| 365) |
| - Status of the Global Initialization Handler call not used (BZ 366) |
| - Incorrect object parameter to Global Initialization Handler (BZ 367) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total |
| Debug Version: 160.5K Code, 65.1K Data, 225.6K Total |
| Current Release: |
| Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total |
| Debug Version: 160.3K Code, 64.9K Data, 225.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Modified the parser to allow the names IO, DMA, and IRQ to be used as |
| namespace identifiers with no collision with existing resource descriptor |
| macro names. This provides compatibility with other ASL compilers and is |
| most useful for disassembly/recompilation of existing tables without |
| parse |
| errors. (With assistance from Thomas Renninger) |
| |
| Disassembler: fixed an incorrect disassembly problem with the |
| DataTableRegion and CopyObject operators. Fixed a possible fault during |
| disassembly of some Alias operators. |
| |
| ---------------------------------------- |
| 12 May 2006. Summary of changes for version 20060512: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Replaced the AcpiOsQueueForExecution interface with a new interface named |
| AcpiOsExecute. The major difference is that the new interface does not |
| have |
| a Priority parameter, this appeared to be useless and has been replaced |
| by |
| a |
| Type parameter. The Type tells the host what type of execution is being |
| requested, such as global lock handler, notify handler, GPE handler, etc. |
| This allows the host to queue and execute the request as appropriate for |
| the |
| request type, possibly using different work queues and different |
| priorities |
| for the various request types. This enables fixes for multithreading |
| deadlock problems such as BZ #5534, and will require changes to all |
| existing |
| OS interface layers. (Alexey Starikovskiy and Bob Moore) |
| |
| Fixed a possible memory leak associated with the support for the so- |
| called |
| "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor |
| Suietov) |
| |
| Fixed a problem with the Load() operator where a table load from an |
| operation region could overwrite an internal table buffer by up to 7 |
| bytes |
| and cause alignment faults on IPF systems. (With assistance from Luming |
| Yu) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total |
| Debug Version: 160.1K Code, 65.2K Data, 225.3K Total |
| Current Release: |
| Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total |
| Debug Version: 160.5K Code, 65.1K Data, 225.6K Total |
| |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Implemented support to cross reference the internal |
| namespace |
| and automatically generate ASL External() statements for symbols not |
| defined |
| within the current table being disassembled. This will simplify the |
| disassembly and recompilation of interdependent tables such as SSDTs |
| since |
| these statements will no longer have to be added manually. |
| |
| Disassembler: Implemented experimental support to automatically detect |
| invocations of external control methods and generate appropriate |
| External() |
| statements. This is problematic because the AML cannot be correctly |
| parsed |
| until the number of arguments for each control method is known. |
| Currently, |
| standalone method invocations and invocations as the source operand of a |
| Store() statement are supported. |
| |
| Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, |
| LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), |
| LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code |
| more readable and likely closer to the original ASL source. |
| |
| ---------------------------------------- |
| 21 April 2006. Summary of changes for version 20060421: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Removed a device initialization optimization introduced in 20051216 where |
| the _STA method was not run unless an _INI was also present for the same |
| device. This optimization could cause problems because it could allow |
| _INI |
| methods to be run within a not-present device subtree. (If a not-present |
| device had no _INI, _STA would not be run, the not-present status would |
| not |
| be discovered, and the children of the device would be incorrectly |
| traversed.) |
| |
| Implemented a new _STA optimization where namespace subtrees that do not |
| contain _INI are identified and ignored during device initialization. |
| Selectively running _STA can significantly improve boot time on large |
| machines (with assistance from Len Brown.) |
| |
| Implemented support for the device initialization case where the returned |
| _STA flags indicate a device not-present but functioning. In this case, |
| _INI |
| is not run, but the device children are examined for presence, as per the |
| ACPI specification. |
| |
| Implemented an additional change to the IndexField support in order to |
| conform to MS behavior. The value written to the Index Register is not |
| simply a byte offset, it is a byte offset in units of the access width of |
| the parent Index Field. (Fiodor Suietov) |
| |
| Defined and deployed a new OSL interface, AcpiOsValidateAddress. This |
| interface is called during the creation of all AML operation regions, and |
| allows the host OS to exert control over what addresses it will allow the |
| AML code to access. Operation Regions whose addresses are disallowed will |
| cause a runtime exception when they are actually accessed (will not |
| affect |
| or abort table loading.) See oswinxf or osunixxf for an example |
| implementation. |
| |
| Defined and deployed a new OSL interface, AcpiOsValidateInterface. This |
| interface allows the host OS to match the various "optional" |
| interface/behavior strings for the _OSI predefined control method as |
| appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf |
| for an example implementation. |
| |
| Restructured and corrected various problems in the exception handling |
| code |
| paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod |
| (with assistance from Takayoshi Kochi.) |
| |
| Modified the Linux source converter to ignore quoted string literals |
| while |
| converting identifiers from mixed to lower case. This will correct |
| problems |
| with the disassembler and other areas where such strings must not be |
| modified. |
| |
| The ACPI_FUNCTION_* macros no longer require quotes around the function |
| name. This allows the Linux source converter to convert the names, now |
| that |
| the converter ignores quoted strings. |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| |
| Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total |
| Debug Version: 158.9K Code, 64.9K Data, 223.8K Total |
| Current Release: |
| Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total |
| Debug Version: 160.1K Code, 65.2K Data, 225.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented 3 new warnings for iASL, and implemented multiple warning |
| levels |
| (w2 flag). |
| |
| 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is |
| not |
| WAIT_FOREVER (0xFFFF) and the code does not examine the return value to |
| check for the possible timeout, a warning is issued. |
| |
| 2) Useless operators: If an ASL operator does not specify an optional |
| target |
| operand and it also does not use the function return value from the |
| operator, a warning is issued since the operator effectively does |
| nothing. |
| |
| 3) Unreferenced objects: If a namespace object is created, but never |
| referenced, a warning is issued. This is a warning level 2 since there |
| are |
| cases where this is ok, such as when a secondary table is loaded that |
| uses |
| the unreferenced objects. Even so, care is taken to only flag objects |
| that |
| don't look like they will ever be used. For example, the reserved methods |
| (starting with an underscore) are usually not referenced because it is |
| expected that the OS will invoke them. |
| |
| ---------------------------------------- |
| 31 March 2006. Summary of changes for version 20060331: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented header file support for the following additional ACPI tables: |
| ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this |
| support, |
| all current and known ACPI tables are now defined in the ACPICA headers |
| and |
| are available for use by device drivers and other software. |
| |
| Implemented support to allow tables that contain ACPI names with invalid |
| characters to be loaded. Previously, this would cause the table load to |
| fail, but since there are several known cases of such tables on existing |
| machines, this change was made to enable ACPI support for them. Also, |
| this |
| matches the behavior of the Microsoft ACPI implementation. |
| |
| Fixed a couple regressions introduced during the memory optimization in |
| the |
| 20060317 release. The namespace node definition required additional |
| reorganization and an internal datatype that had been changed to 8-bit |
| was |
| restored to 32-bit. (Valery Podrezov) |
| |
| Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState |
| could be passed through to AcpiOsReleaseObject which is unexpected. Such |
| null pointers are now trapped and ignored, matching the behavior of the |
| previous implementation before the deployment of AcpiOsReleaseObject. |
| (Valery Podrezov, Fiodor Suietov) |
| |
| Fixed a memory mapping leak during the deletion of a SystemMemory |
| operation |
| region where a cached memory mapping was not deleted. This became a |
| noticeable problem for operation regions that are defined within |
| frequently |
| used control methods. (Dana Meyers) |
| |
| Reorganized the ACPI table header files into two main files: one for the |
| ACPI tables consumed by the ACPICA core, and another for the |
| miscellaneous |
| ACPI tables that are consumed by the drivers and other software. The |
| various |
| FADT definitions were merged into one common section and three different |
| tables (ACPI 1.0, 1.0+, and 2.0) |
| |
| Example Code and Data Size: These are the sizes for the OS-independent |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The |
| debug version of the code includes the debug output trace mechanism and |
| has |
| a much larger code and data size. |
| |
| Previous Release: |
| Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total |
| Debug Version: 158.7K Code, 64.8K Data, 223.5K Total |
| Current Release: |
| Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total |
| Debug Version: 158.9K Code, 64.9K Data, 223.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Disassembler: Implemented support to decode and format all non-AML ACPI |
| tables (tables other than DSDTs and SSDTs.) This includes the new tables |
| added to the ACPICA headers, therefore all current and known ACPI tables |
| are |
| supported. |
| |
| Disassembler: The change to allow ACPI names with invalid characters also |
| enables the disassembly of such tables. Invalid characters within names |
| are |
| changed to '*' to make the name printable; the iASL compiler will still |
| generate an error for such names, however, since this is an invalid ACPI |
| character. |
| |
| Implemented an option for AcpiXtract (-a) to extract all tables found in |
| the |
| input file. The default invocation extracts only the DSDTs and SSDTs. |
| |
| Fixed a couple of gcc generation issues for iASL and AcpiExec and added a |
| makefile for the AcpiXtract utility. |
| |
| ---------------------------------------- |
| 17 March 2006. Summary of changes for version 20060317: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented the use of a cache object for all internal namespace nodes. |
| Since there are about 1000 static nodes in a typical system, this will |
| decrease memory use for cache implementations that minimize per- |
| allocation |
| overhead (such as a slab allocator.) |
| |
| Removed the reference count mechanism for internal namespace nodes, since |
| it |
| was deemed unnecessary. This reduces the size of each namespace node by |
| about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit |
| case, |
| and 32 bytes for the 64-bit case. |
| |
| Optimized several internal data structures to reduce object size on 64- |
| bit |
| platforms by packing data within the 64-bit alignment. This includes the |
| frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static |
| instances corresponding to the namespace objects. |
| |
| Added two new strings for the predefined _OSI method: "Windows 2001.1 |
| SP1" |
| and "Windows 2006". |
| |
| Split the allocation tracking mechanism out to a separate file, from |
| utalloc.c to uttrack.c. This mechanism appears to be only useful for |
| application-level code. Kernels may wish to not include uttrack.c in |
| distributions. |
| |
| Removed all remnants of the obsolete ACPI_REPORT_* macros and the |
| associated |
| code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING |
| macros.) |
| |
| Code and Data Size: These are the sizes for the acpica.lib produced by |
| the |
| Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any |
| ACPI |
| driver or OSPM code. The debug version of the code includes the debug |
| output |
| trace mechanism and has a much larger code and data size. Note that these |
| values will vary depending on the efficiency of the compiler and the |
| compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total |
| Debug Version: 161.6K Code, 65.7K Data, 227.3K Total |
| Current Release: |
| Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total |
| Debug Version: 158.7K Code, 64.8K Data, 223.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler and Tools: |
| |
| Implemented an ANSI C version of the acpixtract utility. This version |
| will |
| automatically extract the DSDT and all SSDTs from the input acpidump text |
| file and dump the binary output to separate files. It can also display a |
| summary of the input file including the headers for each table found and |
| will extract any single ACPI table, with any signature. (See |
| source/tools/acpixtract) |
| |
| ---------------------------------------- |
| 10 March 2006. Summary of changes for version 20060310: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Tagged all external interfaces to the subsystem with the new |
| ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to |
| assist |
| kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL |
| macro. The default definition is NULL. |
| |
| Added the ACPI_THREAD_ID type for the return value from |
| AcpiOsGetThreadId. |
| This allows the host to define this as necessary to simplify kernel |
| integration. The default definition is ACPI_NATIVE_UINT. |
| |
| Fixed two interpreter problems related to error processing, the deletion |
| of |
| objects, and placing invalid pointers onto the internal operator result |
| stack. BZ 6028, 6151 (Valery Podrezov) |
| |
| Increased the reference count threshold where a warning is emitted for |
| large |
| reference counts in order to eliminate unnecessary warnings on systems |
| with |
| large namespaces (especially 64-bit.) Increased the value from 0x400 to |
| 0x800. |
| |
| Due to universal disagreement as to the meaning of the 'c' in the |
| calloc() |
| function, the ACPI_MEM_CALLOCATE macro has been renamed to |
| ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. |
| ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and |
| ACPI_FREE. |
| |
| Code and Data Size: These are the sizes for the acpica.lib produced by |
| the |
| Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any |
| ACPI |
| driver or OSPM code. The debug version of the code includes the debug |
| output |
| trace mechanism and has a much larger code and data size. Note that these |
| values will vary depending on the efficiency of the compiler and the |
| compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total |
| Debug Version: 161.4K Code, 65.7K Data, 227.1K Total |
| Current Release: |
| Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total |
| Debug Version: 161.6K Code, 65.7K Data, 227.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Disassembler: implemented support for symbolic resource descriptor |
| references. If a CreateXxxxField operator references a fixed offset |
| within |
| a |
| resource descriptor, a name is assigned to the descriptor and the offset |
| is |
| translated to the appropriate resource tag and pathname. The addition of |
| this support brings the disassembled code very close to the original ASL |
| source code and helps eliminate run-time errors when the disassembled |
| code |
| is modified (and recompiled) in such a way as to invalidate the original |
| fixed offsets. |
| |
| Implemented support for a Descriptor Name as the last parameter to the |
| ASL |
| Register() macro. This parameter was inadvertently left out of the ACPI |
| specification, and will be added for ACPI 3.0b. |
| |
| Fixed a problem where the use of the "_OSI" string (versus the full path |
| "\_OSI") caused an internal compiler error. ("No back ptr to op") |
| |
| Fixed a problem with the error message that occurs when an invalid string |
| is |
| used for a _HID object (such as one with an embedded asterisk: |
| "*PNP010A".) |
| The correct message is now displayed. |
| |
| ---------------------------------------- |
| 17 February 2006. Summary of changes for version 20060217: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a change to the IndexField support to match the behavior of |
| the |
| Microsoft AML interpreter. The value written to the Index register is now |
| a |
| byte offset, no longer an index based upon the width of the Data |
| register. |
| This should fix IndexField problems seen on some machines where the Data |
| register is not exactly one byte wide. The ACPI specification will be |
| clarified on this point. |
| |
| Fixed a problem where several resource descriptor types could overrun the |
| internal descriptor buffer due to size miscalculation: VendorShort, |
| VendorLong, and Interrupt. This was noticed on IA64 machines, but could |
| affect all platforms. |
| |
| Fixed a problem where individual resource descriptors were misaligned |
| within |
| the internal buffer, causing alignment faults on IA64 platforms. |
| |
| Code and Data Size: These are the sizes for the acpica.lib produced by |
| the |
| Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any |
| ACPI |
| driver or OSPM code. The debug version of the code includes the debug |
| output |
| trace mechanism and has a much larger code and data size. Note that these |
| values will vary depending on the efficiency of the compiler and the |
| compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total |
| Debug Version: 161.3K Code, 65.6K Data, 226.9K Total |
| Current Release: |
| Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total |
| Debug Version: 161.4K Code, 65.7K Data, 227.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support for new reserved names: _WDG and _WED are Microsoft |
| extensions for Windows Instrumentation Management, _TDL is a new ACPI- |
| defined method (Throttling Depth Limit.) |
| |
| Fixed a problem where a zero-length VendorShort or VendorLong resource |
| descriptor was incorrectly emitted as a descriptor of length one. |
| |
| ---------------------------------------- |
| 10 February 2006. Summary of changes for version 20060210: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Removed a couple of extraneous ACPI_ERROR messages that appeared during |
| normal execution. These became apparent after the conversion from |
| ACPI_DEBUG_PRINT. |
| |
| Fixed a problem where the CreateField operator could hang if the BitIndex |
| or |
| NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) |
| |
| Fixed a problem where a DeRefOf operation on a buffer object incorrectly |
| failed with an exception. This also fixes a couple of related RefOf and |
| DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) |
| |
| Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead |
| of |
| AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, |
| BZ |
| 5480) |
| |
| Implemented a memory cleanup at the end of the execution of each |
| iteration |
| of an AML While() loop, preventing the accumulation of outstanding |
| objects. |
| (Valery Podrezov, BZ 5427) |
| |
| Eliminated a chunk of duplicate code in the object resolution code. |
| (Valery |
| Podrezov, BZ 5336) |
| |
| Fixed several warnings during the 64-bit code generation. |
| |
| The AcpiSrc source code conversion tool now inserts one line of |
| whitespace |
| after an if() statement that is followed immediately by a comment, |
| improving |
| readability of the Linux code. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total |
| Debug Version: 161.3K Code, 65.7K Data, 227.0K Total |
| Current Release: |
| Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total |
| Debug Version: 161.3K Code, 65.6K Data, 226.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with the disassembly of a BankField operator with a |
| complex |
| expression for the BankValue parameter. |
| |
| ---------------------------------------- |
| 27 January 2006. Summary of changes for version 20060127: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support in the Resource Manager to allow unresolved |
| namestring |
| references within resource package objects for the _PRT method. This |
| support |
| is in addition to the previously implemented unresolved reference support |
| within the AML parser. If the interpreter slack mode is enabled, these |
| unresolved references will be passed through to the caller as a NULL |
| package |
| entry. |
| |
| Implemented and deployed new macros and functions for error and warning |
| messages across the subsystem. These macros are simpler and generate less |
| code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, |
| ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older |
| macros remain defined to allow ACPI drivers time to migrate to the new |
| macros. |
| |
| Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of |
| the |
| Acquire/Release Lock OSL interfaces. |
| |
| Fixed a problem where Alias ASL operators are sometimes not correctly |
| resolved, in both the interpreter and the iASL compiler. |
| |
| Fixed several problems with the implementation of the |
| ConcatenateResTemplate |
| ASL operator. As per the ACPI specification, zero length buffers are now |
| treated as a single EndTag. One-length buffers always cause a fatal |
| exception. Non-zero length buffers that do not end with a full 2-byte |
| EndTag |
| cause a fatal exception. |
| |
| Fixed a possible structure overwrite in the AcpiGetObjectInfo external |
| interface. (With assistance from Thomas Renninger) |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total |
| Debug Version: 163.2K Code, 66.2K Data, 229.4K Total |
| Current Release: |
| Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total |
| Debug Version: 161.3K Code, 65.7K Data, 227.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed an internal error that was generated for any forward references to |
| ASL |
| Alias objects. |
| |
| ---------------------------------------- |
| 13 January 2006. Summary of changes for version 20060113: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added 2006 copyright to all module headers and signons. This affects |
| virtually every file in the ACPICA core subsystem, iASL compiler, and the |
| utilities. |
| |
| Enhanced the ACPICA error reporting in order to simplify user migration |
| to |
| the non-debug version of ACPICA. Replaced all instances of the |
| ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN |
| debug |
| levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, |
| respectively. This preserves all error and warning messages in the non- |
| debug |
| version of the ACPICA code (this has been referred to as the "debug lite" |
| option.) Over 200 cases were converted to create a total of over 380 |
| error/warning messages across the ACPICA code. This increases the code |
| and |
| data size of the default non-debug version of the code somewhat (about |
| 13K), |
| but all error/warning reporting may be disabled if desired (and code |
| eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time |
| configuration option. The size of the debug version of ACPICA remains |
| about |
| the same. |
| |
| Fixed a memory leak within the AML Debugger "Set" command. One object was |
| not properly deleted for every successful invocation of the command. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total |
| Debug Version: 163.7K Code, 67.5K Data, 231.2K Total |
| Current Release: |
| Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total |
| Debug Version: 163.2K Code, 66.2K Data, 229.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| The compiler now officially supports the ACPI 3.0a specification that was |
| released on December 30, 2005. (Specification is available at |
| www.acpi.info) |
| |
| ---------------------------------------- |
| 16 December 2005. Summary of changes for version 20051216: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented optional support to allow unresolved names within ASL Package |
| objects. A null object is inserted in the package when a named reference |
| cannot be located in the current namespace. Enabled via the interpreter |
| slack flag, this should eliminate AE_NOT_FOUND exceptions seen on |
| machines |
| that contain such code. |
| |
| Implemented an optimization to the initialization sequence that can |
| improve |
| boot time. During ACPI device initialization, the _STA method is now run |
| if |
| and only if the _INI method exists. The _STA method is used to determine |
| if |
| the device is present; An _INI can only be run if _STA returns present, |
| but |
| it is a waste of time to run the _STA method if the _INI does not exist. |
| (Prototype and assistance from Dong Wei) |
| |
| Implemented use of the C99 uintptr_t for the pointer casting macros if it |
| is |
| available in the current compiler. Otherwise, the default (void *) cast |
| is |
| used as before. |
| |
| Fixed some possible memory leaks found within the execution path of the |
| Break, Continue, If, and CreateField operators. (Valery Podrezov) |
| |
| Fixed a problem introduced in the 20051202 release where an exception is |
| generated during method execution if a control method attempts to declare |
| another method. |
| |
| Moved resource descriptor string constants that are used by both the AML |
| disassembler and AML debugger to the common utilities directory so that |
| these components are independent. |
| |
| Implemented support in the AcpiExec utility (-e switch) to globally |
| ignore |
| exceptions during control method execution (method is not aborted.) |
| |
| Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix |
| generation. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total |
| Debug Version: 163.2K Code, 67.4K Data, 230.6K Total |
| Current Release: |
| Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total |
| Debug Version: 163.7K Code, 67.5K Data, 231.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem where a CPU stack overflow fault could occur if a |
| recursive |
| method call was made from within a Return statement. |
| |
| ---------------------------------------- |
| 02 December 2005. Summary of changes for version 20051202: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Modified the parsing of control methods to no longer create namespace |
| objects during the first pass of the parse. Objects are now created only |
| during the execute phase, at the moment the namespace creation operator |
| is |
| encountered in the AML (Name, OperationRegion, CreateByteField, etc.) |
| This |
| should eliminate ALREADY_EXISTS exceptions seen on some machines where |
| reentrant control methods are protected by an AML mutex. The mutex will |
| now |
| correctly block multiple threads from attempting to create the same |
| object |
| more than once. |
| |
| Increased the number of available Owner Ids for namespace object tracking |
| from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen |
| on |
| some machines with a large number of ACPI tables (either static or |
| dynamic). |
| |
| Fixed a problem with the AcpiExec utility where a fault could occur when |
| the |
| -b switch (batch mode) is used. |
| |
| Enhanced the namespace dump routine to output the owner ID for each |
| namespace object. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total |
| Debug Version: 163.0K Code, 67.4K Data, 230.4K Total |
| Current Release: |
| Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total |
| Debug Version: 163.2K Code, 67.4K Data, 230.6K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a parse error during compilation of certain Switch/Case constructs. |
| To |
| simplify the parse, the grammar now allows for multiple Default |
| statements |
| and this error is now detected and flagged during the analysis phase. |
| |
| Disassembler: The disassembly now includes the contents of the original |
| table header within a comment at the start of the file. This includes the |
| name and version of the original ASL compiler. |
| |
| ---------------------------------------- |
| 17 November 2005. Summary of changes for version 20051117: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem in the AML parser where the method thread count could be |
| decremented below zero if any errors occurred during the method parse |
| phase. |
| This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some |
| machines. |
| This also fixed a related regression with the mechanism that detects and |
| corrects methods that cannot properly handle reentrancy (related to the |
| deployment of the new OwnerId mechanism.) |
| |
| Eliminated the pre-parsing of control methods (to detect errors) during |
| table load. Related to the problem above, this was causing unwind issues |
| if |
| any errors occurred during the parse, and it seemed to be overkill. A |
| table |
| load should not be aborted if there are problems with any single control |
| method, thus rendering this feature rather pointless. |
| |
| Fixed a problem with the new table-driven resource manager where an |
| internal |
| buffer overflow could occur for small resource templates. |
| |
| Implemented a new external interface, AcpiGetVendorResource. This |
| interface |
| will find and return a vendor-defined resource descriptor within a _CRS |
| or |
| _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn |
| Helgaas. |
| |
| Removed the length limit (200) on string objects as per the upcoming ACPI |
| 3.0A specification. This affects the following areas of the interpreter: |
| 1) |
| any implicit conversion of a Buffer to a String, 2) a String object |
| result |
| of the ASL Concatenate operator, 3) the String object result of the ASL |
| ToString operator. |
| |
| Fixed a problem in the Windows OS interface layer (OSL) where a |
| WAIT_FOREVER |
| on a semaphore object would incorrectly timeout. This allows the |
| multithreading features of the AcpiExec utility to work properly under |
| Windows. |
| |
| Updated the Linux makefiles for the iASL compiler and AcpiExec to include |
| the recently added file named "utresrc.c". |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total |
| Debug Version: 163.0K Code, 67.4K Data, 230.4K Total |
| Current Release: |
| Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total |
| Debug Version: 163.0K Code, 67.4K Data, 230.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Removed the limit (200) on string objects as per the upcoming ACPI 3.0A |
| specification. For the iASL compiler, this means that string literals |
| within |
| the source ASL can be of any length. |
| |
| Enhanced the listing output to dump the AML code for resource descriptors |
| immediately after the ASL code for each descriptor, instead of in a block |
| at |
| the end of the entire resource template. |
| |
| Enhanced the compiler debug output to dump the entire original parse tree |
| constructed during the parse phase, before any transforms are applied to |
| the |
| tree. The transformed tree is dumped also. |
| |
| ---------------------------------------- |
| 02 November 2005. Summary of changes for version 20051102: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Modified the subsystem initialization sequence to improve GPE support. |
| The |
| GPE initialization has been split into two parts in order to defer |
| execution |
| of the _PRW methods (Power Resources for Wake) until after the hardware |
| is |
| fully initialized and the SCI handler is installed. This allows the _PRW |
| methods to access fields protected by the Global Lock. This will fix |
| systems |
| where a NO_GLOBAL_LOCK exception has been seen during initialization. |
| |
| Converted the ACPI internal object disassemble and display code within |
| the |
| AML debugger to fully table-driven operation, reducing code size and |
| increasing maintainability. |
| |
| Fixed a regression with the ConcatenateResTemplate() ASL operator |
| introduced |
| in the 20051021 release. |
| |
| Implemented support for "local" internal ACPI object types within the |
| debugger "Object" command and the AcpiWalkNamespace external interfaces. |
| These local types include RegionFields, BankFields, IndexFields, Alias, |
| and |
| reference objects. |
| |
| Moved common AML resource handling code into a new file, "utresrc.c". |
| This |
| code is shared by both the Resource Manager and the AML Debugger. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total |
| Debug Version: 163.5K Code, 67.0K Data, 230.5K Total |
| Current Release: |
| Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total |
| Debug Version: 163.0K Code, 67.4K Data, 230.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with very large initializer lists (more than 4000 |
| elements) |
| for both Buffer and Package objects where the parse stack could overflow. |
| |
| Enhanced the pre-compile source code scan for non-ASCII characters to |
| ignore |
| characters within comment fields. The scan is now always performed and is |
| no |
| longer optional, detecting invalid characters within a source file |
| immediately rather than during the parse phase or later. |
| |
| Enhanced the ASL grammar definition to force early reductions on all |
| list- |
| style grammar elements so that the overall parse stack usage is greatly |
| reduced. This should improve performance and reduce the possibility of |
| parse |
| stack overflow. |
| |
| Eliminated all reduce/reduce conflicts in the iASL parser generation. |
| Also, |
| with the addition of a %expected statement, the compiler generates from |
| source with no warnings. |
| |
| Fixed a possible segment fault in the disassembler if the input filename |
| does not contain a "dot" extension (Thomas Renninger). |
| |
| ---------------------------------------- |
| 21 October 2005. Summary of changes for version 20051021: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for the EM64T and other x86-64 processors. This |
| essentially entails recognizing that these processors support non-aligned |
| memory transfers. Previously, all 64-bit processors were assumed to lack |
| hardware support for non-aligned transfers. |
| |
| Completed conversion of the Resource Manager to nearly full table-driven |
| operation. Specifically, the resource conversion code (convert AML to |
| internal format and the reverse) and the debug code to dump internal |
| resource descriptors are fully table-driven, reducing code and data size |
| and |
| improving maintainability. |
| |
| The OSL interfaces for Acquire and Release Lock now use a 64-bit flag |
| word |
| on 64-bit processors instead of a fixed 32-bit word. (With assistance |
| from |
| Alexey Starikovskiy) |
| |
| Implemented support within the resource conversion code for the Type- |
| Specific byte within the various ACPI 3.0 *WordSpace macros. |
| |
| Fixed some issues within the resource conversion code for the type- |
| specific |
| flags for both Memory and I/O address resource descriptors. For Memory, |
| implemented support for the MTP and TTP flags. For I/O, split the TRS and |
| TTP flags into two separate fields. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total |
| Debug Version: 168.0K Code, 68.3K Data, 236.3K Total |
| Current Release: |
| Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total |
| Debug Version: 163.5K Code, 67.0K Data, 230.5K Total |
| |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Relaxed a compiler restriction that disallowed a ResourceIndex byte if |
| the |
| corresponding ResourceSource string was not also present in a resource |
| descriptor declaration. This restriction caused problems with existing |
| AML/ASL code that includes the Index byte without the string. When such |
| AML |
| was disassembled, it could not be compiled without modification. Further, |
| the modified code created a resource template with a different size than |
| the |
| original, breaking code that used fixed offsets into the resource |
| template |
| buffer. |
| |
| Removed a recent feature of the disassembler to ignore a lone |
| ResourceIndex |
| byte. This byte is now emitted if present so that the exact AML can be |
| reproduced when the disassembled code is recompiled. |
| |
| Improved comments and text alignment for the resource descriptor code |
| emitted by the disassembler. |
| |
| Implemented disassembler support for the ACPI 3.0 AccessSize field within |
| a |
| Register() resource descriptor. |
| |
| ---------------------------------------- |
| 30 September 2005. Summary of changes for version 20050930: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed a major overhaul of the Resource Manager code - specifically, |
| optimizations in the area of the AML/internal resource conversion code. |
| The |
| code has been optimized to simplify and eliminate duplicated code, CPU |
| stack |
| use has been decreased by optimizing function parameters and local |
| variables, and naming conventions across the manager have been |
| standardized |
| for clarity and ease of maintenance (this includes function, parameter, |
| variable, and struct/typedef names.) The update may force changes in some |
| driver code, depending on how resources are handled by the host OS. |
| |
| All Resource Manager dispatch and information tables have been moved to a |
| single location for clarity and ease of maintenance. One new file was |
| created, named "rsinfo.c". |
| |
| The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to |
| guarantee that the argument is not evaluated twice, making them less |
| prone |
| to macro side-effects. However, since there exists the possibility of |
| additional stack use if a particular compiler cannot optimize them (such |
| as |
| in the debug generation case), the original macros are optionally |
| available. |
| Note that some invocations of the return_VALUE macro may now cause size |
| mismatch warnings; the return_UINT8 and return_UINT32 macros are provided |
| to |
| eliminate these. (From Randy Dunlap) |
| |
| Implemented a new mechanism to enable debug tracing for individual |
| control |
| methods. A new external interface, AcpiDebugTrace, is provided to enable |
| this mechanism. The intent is to allow the host OS to easily enable and |
| disable tracing for problematic control methods. This interface can be |
| easily exposed to a user or debugger interface if desired. See the file |
| psxface.c for details. |
| |
| AcpiUtCallocate will now return a valid pointer if a length of zero is |
| specified - a length of one is used and a warning is issued. This matches |
| the behavior of AcpiUtAllocate. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total |
| Debug Version: 168.1K Code, 68.4K Data, 236.5K Total |
| Current Release: |
| Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total |
| Debug Version: 168.0K Code, 68.3K Data, 236.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| A remark is issued if the effective compile-time length of a package or |
| buffer is zero. Previously, this was a warning. |
| |
| ---------------------------------------- |
| 16 September 2005. Summary of changes for version 20050916: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem within the Resource Manager where support for the Generic |
| Register descriptor was not fully implemented. This descriptor is now |
| fully |
| recognized, parsed, disassembled, and displayed. |
| |
| Completely restructured the Resource Manager code to utilize table-driven |
| dispatch and lookup, eliminating many of the large switch() statements. |
| This |
| reduces overall subsystem code size and code complexity. Affects the |
| resource parsing and construction, disassembly, and debug dump output. |
| |
| Cleaned up and restructured the debug dump output for all resource |
| descriptors. Improved readability of the output and reduced code size. |
| |
| Fixed a problem where changes to internal data structures caused the |
| optional ACPI_MUTEX_DEBUG code to fail compilation if specified. |
| |
| Code and Data Size: The current and previous library sizes for the core |
| subsystem are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. |
| These |
| values do not include any ACPI driver or OSPM code. The debug version of |
| the |
| code includes the debug output trace mechanism and has a much larger code |
| and data size. Note that these values will vary depending on the |
| efficiency |
| of the compiler and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total |
| Debug Version: 169.6K Code, 69.9K Data, 239.5K Total |
| Current Release: |
| Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total |
| Debug Version: 168.1K Code, 68.4K Data, 236.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Updated the disassembler to automatically insert an EndDependentFn() |
| macro |
| into the ASL stream if this macro is missing in the original AML code, |
| simplifying compilation of the resulting ASL module. |
| |
| Fixed a problem in the disassembler where a disassembled ResourceSource |
| string (within a large resource descriptor) was not surrounded by quotes |
| and |
| not followed by a comma, causing errors when the resulting ASL module was |
| compiled. Also, escape sequences within a ResourceSource string are now |
| handled correctly (especially "\\") |
| |
| ---------------------------------------- |
| 02 September 2005. Summary of changes for version 20050902: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem with the internal Owner ID allocation and deallocation |
| mechanisms for control method execution and recursive method invocation. |
| This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" |
| messages seen on some systems. Recursive method invocation depth is |
| currently limited to 255. (Alexey Starikovskiy) |
| |
| Completely eliminated all vestiges of support for the "module-level |
| executable code" until this support is fully implemented and debugged. |
| This |
| should eliminate the NO_RETURN_VALUE exceptions seen during table load on |
| some systems that invoke this support. |
| |
| Fixed a problem within the resource manager code where the transaction |
| flags |
| for a 64-bit address descriptor were handled incorrectly in the type- |
| specific flag byte. |
| |
| Consolidated duplicate code within the address descriptor resource |
| manager |
| code, reducing overall subsystem code size. |
| |
| Fixed a fault when using the AML debugger "disassemble" command to |
| disassemble individual control methods. |
| |
| Removed references to the "release_current" directory within the Unix |
| release package. |
| |
| Code and Data Size: The current and previous core subsystem library sizes |
| are shown below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler. These values do not |
| include any ACPI driver or OSPM code. The debug version of the code |
| includes |
| the debug output trace mechanism and has a much larger code and data |
| size. |
| Note that these values will vary depending on the efficiency of the |
| compiler |
| and the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total |
| Debug Version: 170.0K Code, 69.9K Data, 239.9K Total |
| Current Release: |
| Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total |
| Debug Version: 169.6K Code, 69.9K Data, 239.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented an error check for illegal duplicate values in the interrupt |
| and |
| dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and |
| Interrupt(). |
| |
| Implemented error checking for the Irq() and IrqNoFlags() macros to |
| detect |
| too many values in the interrupt list (16 max) and invalid values in the |
| list (range 0 - 15) |
| |
| The maximum length string literal within an ASL file is now restricted to |
| 200 characters as per the ACPI specification. |
| |
| Fixed a fault when using the -ln option (generate namespace listing). |
| |
| Implemented an error check to determine if a DescriptorName within a |
| resource descriptor has already been used within the current scope. |
| |
| ---------------------------------------- |
| 15 August 2005. Summary of changes for version 20050815: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a full bytewise compare to determine if a table load request |
| is |
| attempting to load a duplicate table. The compare is performed if the |
| table |
| signatures and table lengths match. This will allow different tables with |
| the same OEM Table ID and revision to be loaded - probably against the |
| ACPI |
| specification, but discovered in the field nonetheless. |
| |
| Added the changes.txt logfile to each of the zipped release packages. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total |
| Debug Version: 167.0K Code, 69.9K Data, 236.9K Total |
| Current Release: |
| Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total |
| Debug Version: 170.0K Code, 69.9K Data, 239.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem where incorrect AML code could be generated for Package |
| objects if optimization is disabled (via the -oa switch). |
| |
| Fixed a problem with where incorrect AML code is generated for variable- |
| length packages when the package length is not specified and the number |
| of |
| initializer values is greater than 255. |
| |
| |
| ---------------------------------------- |
| 29 July 2005. Summary of changes for version 20050729: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support to ignore an attempt to install/load a particular |
| ACPI |
| table more than once. Apparently there exists BIOS code that repeatedly |
| attempts to load the same SSDT upon certain events. With assistance from |
| Venkatesh Pallipadi. |
| |
| Restructured the main interface to the AML parser in order to correctly |
| handle all exceptional conditions. This will prevent leakage of the |
| OwnerId |
| resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on |
| some |
| machines. With assistance from Alexey Starikovskiy. |
| |
| Support for "module level code" has been disabled in this version due to |
| a |
| number of issues that have appeared on various machines. The support can |
| be |
| enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem |
| compilation. When the issues are fully resolved, the code will be enabled |
| by |
| default again. |
| |
| Modified the internal functions for debug print support to define the |
| FunctionName parameter as a (const char *) for compatibility with |
| compiler |
| built-in macros such as __FUNCTION__, etc. |
| |
| Linted the entire ACPICA source tree for both 32-bit and 64-bit. |
| |
| Implemented support to display an object count summary for the AML |
| Debugger |
| commands Object and Methods. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total |
| Debug Version: 170.0K Code, 69.7K Data, 239.7K Total |
| Current Release: |
| Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total |
| Debug Version: 167.0K Code, 69.9K Data, 236.9K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a regression that appeared in the 20050708 version of the compiler |
| where an error message was inadvertently emitted for invocations of the |
| _OSI |
| reserved control method. |
| |
| ---------------------------------------- |
| 08 July 2005. Summary of changes for version 20050708: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The use of the CPU stack in the debug version of the subsystem has been |
| considerably reduced. Previously, a debug structure was declared in every |
| function that used the debug macros. This structure has been removed in |
| favor of declaring the individual elements as parameters to the debug |
| functions. This reduces the cumulative stack use during nested execution |
| of |
| ACPI function calls at the cost of a small increase in the code size of |
| the |
| debug version of the subsystem. With assistance from Alexey Starikovskiy |
| and |
| Len Brown. |
| |
| Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent |
| headers to define a macro that will return the current function name at |
| runtime (such as __FUNCTION__ or _func_, etc.) The function name is used |
| by |
| the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the |
| compiler-dependent header, the function name is saved on the CPU stack |
| (one |
| pointer per function.) This mechanism is used because apparently there |
| exists no standard ANSI-C defined macro that that returns the function |
| name. |
| |
| Redesigned and reimplemented the "Owner ID" mechanism used to track |
| namespace objects created/deleted by ACPI tables and control method |
| execution. A bitmap is now used to allocate and free the IDs, thus |
| solving |
| the wraparound problem present in the previous implementation. The size |
| of |
| the namespace node descriptor was reduced by 2 bytes as a result (Alexey |
| Starikovskiy). |
| |
| Removed the UINT32_BIT and UINT16_BIT types that were used for the |
| bitfield |
| flag definitions within the headers for the predefined ACPI tables. These |
| have been replaced by UINT8_BIT in order to increase the code portability |
| of |
| the subsystem. If the use of UINT8 remains a problem, we may be forced to |
| eliminate bitfields entirely because of a lack of portability. |
| |
| Enhanced the performance of the AcpiUtUpdateObjectReference procedure. |
| This |
| is a frequently used function and this improvement increases the |
| performance |
| of the entire subsystem (Alexey Starikovskiy). |
| |
| Fixed several possible memory leaks and the inverse - premature object |
| deletion (Alexey Starikovskiy). |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total |
| Debug Version: 165.2K Code, 69.6K Data, 234.8K Total |
| Current Release: |
| Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total |
| Debug Version: 170.0K Code, 69.7K Data, 239.7K Total |
| |
| ---------------------------------------- |
| 24 June 2005. Summary of changes for version 20050624: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for |
| the host-defined cache object. This allows the OSL implementation to |
| define |
| and type this object in any manner desired, simplifying the OSL |
| implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for |
| Linux, and should be defined in the OS-specific header file for other |
| operating systems as required. |
| |
| Changed the interface to AcpiOsAcquireObject to directly return the |
| requested object as the function return (instead of ACPI_STATUS.) This |
| change was made for performance reasons, since this is the purpose of the |
| interface in the first place. AcpiOsAcquireObject is now similar to the |
| AcpiOsAllocate interface. |
| |
| Implemented a new AML debugger command named Businfo. This command |
| displays |
| information about all devices that have an associate _PRT object. The |
| _ADR, |
| _HID, _UID, and _CID are displayed for these devices. |
| |
| Modified the initialization sequence in AcpiInitializeSubsystem to call |
| the |
| OSL interface AcpiOslInitialize first, before any local initialization. |
| This |
| change was required because the global initialization now calls OSL |
| interfaces. |
| |
| Enhanced the Dump command to display the entire contents of Package |
| objects |
| (including all sub-objects and their values.) |
| |
| Restructured the code base to split some files because of size and/or |
| because the code logically belonged in a separate file. New files are |
| listed |
| below. All makefiles and project files included in the ACPI CA release |
| have |
| been updated. |
| utilities/utcache.c /* Local cache interfaces */ |
| utilities/utmutex.c /* Local mutex support */ |
| utilities/utstate.c /* State object support */ |
| interpreter/parser/psloop.c /* Main AML parse loop */ |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total |
| Debug Version: 164.0K Code, 69.1K Data, 233.1K Total |
| Current Release: |
| Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total |
| Debug Version: 165.2K Code, 69.6K Data, 234.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a regression introduced in version 20050513 where the use of a |
| Package |
| object within a Case() statement caused a compile time exception. The |
| original behavior has been restored (a Match() operator is emitted.) |
| |
| ---------------------------------------- |
| 17 June 2005. Summary of changes for version 20050617: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Moved the object cache operations into the OS interface layer (OSL) to |
| allow |
| the host OS to handle these operations if desired (for example, the Linux |
| OSL will invoke the slab allocator). This support is optional; the |
| compile |
| time define ACPI_USE_LOCAL_CACHE may be used to utilize the original |
| cache |
| code in the ACPI CA core. The new OSL interfaces are shown below. See |
| utalloc.c for an example implementation, and acpiosxf.h for the exact |
| interface definitions. With assistance from Alexey Starikovskiy. |
| AcpiOsCreateCache |
| AcpiOsDeleteCache |
| AcpiOsPurgeCache |
| AcpiOsAcquireObject |
| AcpiOsReleaseObject |
| |
| Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to |
| return |
| and restore a flags parameter. This fits better with many OS lock models. |
| Note: the current execution state (interrupt handler or not) is no longer |
| passed to these interfaces. If necessary, the OSL must determine this |
| state |
| by itself, a simple and fast operation. With assistance from Alexey |
| Starikovskiy. |
| |
| Fixed a problem in the ACPI table handling where a valid XSDT was assumed |
| present if the revision of the RSDP was 2 or greater. According to the |
| ACPI |
| specification, the XSDT is optional in all cases, and the table manager |
| therefore now checks for both an RSDP >=2 and a valid XSDT pointer. |
| Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs |
| contain |
| only the RSDT. |
| |
| Fixed an interpreter problem with the Mid() operator in the case of an |
| input |
| string where the resulting output string is of zero length. It now |
| correctly |
| returns a valid, null terminated string object instead of a string object |
| with a null pointer. |
| |
| Fixed a problem with the control method argument handling to allow a |
| store |
| to an Arg object that already contains an object of type Device. The |
| Device |
| object is now correctly overwritten. Previously, an error was returned. |
| |
| |
| Enhanced the debugger Find command to emit object values in addition to |
| the |
| found object pathnames. The output format is the same as the dump |
| namespace |
| command. |
| |
| Enhanced the debugger Set command. It now has the ability to set the |
| value |
| of any Named integer object in the namespace (Previously, only method |
| locals |
| and args could be set.) |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total |
| Debug Version: 164.0K Code, 69.3K Data, 233.3K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total |
| Debug Version: 164.0K Code, 69.1K Data, 233.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a regression in the disassembler where if/else/while constructs |
| were |
| output incorrectly. This problem was introduced in the previous release |
| (20050526). This problem also affected the single-step disassembly in the |
| debugger. |
| |
| Fixed a problem where compiling the reserved _OSI method would randomly |
| (but |
| rarely) produce compile errors. |
| |
| Enhanced the disassembler to emit compilable code in the face of |
| incorrect |
| AML resource descriptors. If the optional ResourceSourceIndex is present, |
| but the ResourceSource is not, do not emit the ResourceSourceIndex in the |
| disassembly. Otherwise, the resulting code cannot be compiled without |
| errors. |
| |
| ---------------------------------------- |
| 26 May 2005. Summary of changes for version 20050526: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support to execute Type 1 and Type 2 AML opcodes appearing at |
| the module level (not within a control method.) These opcodes are |
| executed |
| exactly once at the time the table is loaded. This type of code was legal |
| up |
| until the release of ACPI 2.0B (2002) and is now supported within ACPI CA |
| in |
| order to provide backwards compatibility with earlier BIOS |
| implementations. |
| This eliminates the "Encountered executable code at module level" warning |
| that was previously generated upon detection of such code. |
| |
| Fixed a problem in the interpreter where an AE_NOT_FOUND exception could |
| inadvertently be generated during the lookup of namespace objects in the |
| second pass parse of ACPI tables and control methods. It appears that |
| this |
| problem could occur during the resolution of forward references to |
| namespace |
| objects. |
| |
| Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, |
| corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This |
| allows the deadlock detection debug code to be compiled out in the normal |
| case, improving mutex performance (and overall subsystem performance) |
| considerably. |
| |
| Implemented a handful of miscellaneous fixes for possible memory leaks on |
| error conditions and error handling control paths. These fixes were |
| suggested by FreeBSD and the Coverity Prevent source code analysis tool. |
| |
| Added a check for a null RSDT pointer in AcpiGetFirmwareTable |
| (tbxfroot.c) |
| to prevent a fault in this error case. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total |
| Debug Version: 163.7K Code, 69.3K Data, 233.0K Total |
| Current Release: |
| Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total |
| Debug Version: 164.0K Code, 69.3K Data, 233.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support to allow Type 1 and Type 2 ASL operators to appear at |
| the module level (not within a control method.) These operators will be |
| executed once at the time the table is loaded. This type of code was |
| legal |
| up until the release of ACPI 2.0B (2002) and is now supported by the iASL |
| compiler in order to provide backwards compatibility with earlier BIOS |
| ASL |
| code. |
| |
| The ACPI integer width (specified via the table revision ID or the -r |
| override, 32 or 64 bits) is now used internally during compile-time |
| constant |
| folding to ensure that constants are truncated to 32 bits if necessary. |
| Previously, the revision ID value was only emitted in the AML table |
| header. |
| |
| An error message is now generated for the Mutex and Method operators if |
| the |
| SyncLevel parameter is outside the legal range of 0 through 15. |
| |
| Fixed a problem with the Method operator ParameterTypes list handling |
| (ACPI |
| 3.0). Previously, more than 2 types or 2 arguments generated a syntax |
| error. |
| The actual underlying implementation of method argument typechecking is |
| still under development, however. |
| |
| ---------------------------------------- |
| 13 May 2005. Summary of changes for version 20050513: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for PCI Express root bridges -- added support for |
| device |
| PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. |
| |
| The interpreter now automatically truncates incoming 64-bit constants to |
| 32 |
| bits if currently executing out of a 32-bit ACPI table (Revision < 2). |
| This |
| also affects the iASL compiler constant folding. (Note: as per below, the |
| iASL compiler no longer allows 64-bit constants within 32-bit tables.) |
| |
| Fixed a problem where string and buffer objects with "static" pointers |
| (pointers to initialization data within an ACPI table) were not handled |
| consistently. The internal object copy operation now always copies the |
| data |
| to a newly allocated buffer, regardless of whether the source object is |
| static or not. |
| |
| Fixed a problem with the FromBCD operator where an implicit result |
| conversion was improperly performed while storing the result to the |
| target |
| operand. Since this is an "explicit conversion" operator, the implicit |
| conversion should never be performed on the output. |
| |
| Fixed a problem with the CopyObject operator where a copy to an existing |
| named object did not always completely overwrite the existing object |
| stored |
| at name. Specifically, a buffer-to-buffer copy did not delete the |
| existing |
| buffer. |
| |
| Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces |
| and |
| structs for consistency. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total |
| Debug Version: 163.7K Code, 69.3K Data, 233.0K Total |
| Current Release: (Same sizes) |
| Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total |
| Debug Version: 163.7K Code, 69.3K Data, 233.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| The compiler now emits a warning if an attempt is made to generate a 64- |
| bit |
| integer constant from within a 32-bit ACPI table (Revision < 2). The |
| integer |
| is truncated to 32 bits. |
| |
| Fixed a problem with large package objects: if the static length of the |
| package is greater than 255, the "variable length package" opcode is |
| emitted. Previously, this caused an error. This requires an update to the |
| ACPI spec, since it currently (incorrectly) states that packages larger |
| than |
| 255 elements are not allowed. |
| |
| The disassembler now correctly handles variable length packages and |
| packages |
| larger than 255 elements. |
| |
| ---------------------------------------- |
| 08 April 2005. Summary of changes for version 20050408: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed three cases in the interpreter where an "index" argument to an ASL |
| function was still (internally) 32 bits instead of the required 64 bits. |
| This was the Index argument to the Index, Mid, and Match operators. |
| |
| The "strupr" function is now permanently local (AcpiUtStrupr), since this |
| is |
| not a POSIX-defined function and not present in most kernel-level C |
| libraries. All references to the C library strupr function have been |
| removed |
| from the headers. |
| |
| Completed the deployment of static functions/prototypes. All prototypes |
| with |
| the static attribute have been moved from the headers to the owning C |
| file. |
| |
| Implemented an extract option (-e) for the AcpiBin utility (AML binary |
| utility). This option allows the utility to extract individual ACPI |
| tables |
| from the output of AcpiDmp. It provides the same functionality of the |
| acpixtract.pl perl script without the worry of setting the correct perl |
| options. AcpiBin runs on Windows and has not yet been generated/validated |
| in |
| the Linux/Unix environment (but should be soon). |
| |
| Updated and fixed the table dump option for AcpiBin (-d). This option |
| converts a single ACPI table to a hex/ascii file, similar to the output |
| of |
| AcpiDmp. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total |
| Debug Version: 163.5K Code, 69.3K Data, 232.8K Total |
| Current Release: |
| Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total |
| Debug Version: 163.7K Code, 69.3K Data, 233.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Disassembler fix: Added a check to ensure that the table length found in |
| the |
| ACPI table header within the input file is not longer than the actual |
| input |
| file size. This indicates some kind of file or table corruption. |
| |
| ---------------------------------------- |
| 29 March 2005. Summary of changes for version 20050329: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| An error is now generated if an attempt is made to create a Buffer Field |
| of |
| length zero (A CreateField with a length operand of zero.) |
| |
| The interpreter now issues a warning whenever executable code at the |
| module |
| level is detected during ACPI table load. This will give some idea of the |
| prevalence of this type of code. |
| |
| Implemented support for references to named objects (other than control |
| methods) within package objects. |
| |
| Enhanced package object output for the debug object. Package objects are |
| now |
| completely dumped, showing all elements. |
| |
| Enhanced miscellaneous object output for the debug object. Any object can |
| now be written to the debug object (for example, a device object can be |
| written, and the type of the object will be displayed.) |
| |
| The "static" qualifier has been added to all local functions across both |
| the |
| core subsystem and the iASL compiler. |
| |
| The number of "long" lines (> 80 chars) within the source has been |
| significantly reduced, by about 1/3. |
| |
| Cleaned up all header files to ensure that all CA/iASL functions are |
| prototyped (even static functions) and the formatting is consistent. |
| |
| Two new header files have been added, acopcode.h and acnames.h. |
| |
| Removed several obsolete functions that were no longer used. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.4K Code, 69.7K Data, 236.1K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total |
| Debug Version: 163.5K Code, 69.3K Data, 232.8K Total |
| |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with the resource descriptor generation/support. For the |
| ResourceSourceIndex and the ResourceSource fields, both must be present, |
| or |
| both must be not present - can't have one without the other. |
| |
| The compiler now returns non-zero from the main procedure if any errors |
| have |
| occurred during the compilation. |
| |
| |
| ---------------------------------------- |
| 09 March 2005. Summary of changes for version 20050309: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The string-to-buffer implicit conversion code has been modified again |
| after |
| a change to the ACPI specification. In order to match the behavior of |
| the |
| other major ACPI implementation, the target buffer is no longer truncated |
| if |
| the source string is smaller than an existing target buffer. This change |
| requires an update to the ACPI spec, and should eliminate the recent |
| AE_AML_BUFFER_LIMIT issues. |
| |
| The "implicit return" support was rewritten to a new algorithm that |
| solves |
| the general case. Rather than attempt to determine when a method is about |
| to |
| exit, the result of every ASL operator is saved momentarily until the |
| very |
| next ASL operator is executed. Therefore, no matter how the method exits, |
| there will always be a saved implicit return value. This feature is only |
| enabled with the AcpiGbl_EnableInterpreterSlack flag, and should |
| eliminate |
| AE_AML_NO_RETURN_VALUE errors when enabled. |
| |
| Implemented implicit conversion support for the predicate (operand) of |
| the |
| If, Else, and While operators. String and Buffer arguments are |
| automatically |
| converted to Integers. |
| |
| Changed the string-to-integer conversion behavior to match the new ACPI |
| errata: "If no integer object exists, a new integer is created. The ASCII |
| string is interpreted as a hexadecimal constant. Each string character is |
| interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting |
| with the first character as the most significant digit, and ending with |
| the |
| first non-hexadecimal character or end-of-string." This means that the |
| first |
| non-hex character terminates the conversion and this is the code that was |
| changed. |
| |
| Fixed a problem where the ObjectType operator would fail (fault) when |
| used |
| on an Index of a Package which pointed to a null package element. The |
| operator now properly returns zero (Uninitialized) in this case. |
| |
| Fixed a problem where the While operator used excessive memory by not |
| properly popping the result stack during execution. There was no memory |
| leak |
| after execution, however. (Code provided by Valery Podrezov.) |
| |
| Fixed a problem where references to control methods within Package |
| objects |
| caused the method to be invoked, instead of producing a reference object |
| pointing to the method. |
| |
| Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) |
| to |
| improve performance and reduce code size. (Code provided by Alexey |
| Starikovskiy.) |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.4K Code, 69.6K Data, 236.0K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.4K Code, 69.7K Data, 236.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with the Return operator with no arguments. Since the AML |
| grammar for the byte encoding requires an operand for the Return opcode, |
| the |
| compiler now emits a Return(Zero) for this case. An ACPI specification |
| update has been written for this case. |
| |
| For tables other than the DSDT, namepath optimization is automatically |
| disabled. This is because SSDTs can be loaded anywhere in the namespace, |
| the |
| compiler has no knowledge of where, and thus cannot optimize namepaths. |
| |
| Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was |
| inadvertently omitted from the ACPI specification, and will require an |
| update to the spec. |
| |
| The source file scan for ASCII characters is now optional (-a). This |
| change |
| was made because some vendors place non-ascii characters within comments. |
| However, the scan is simply a brute-force byte compare to ensure all |
| characters in the file are in the range 0x00 to 0x7F. |
| |
| Fixed a problem with the CondRefOf operator where the compiler was |
| inappropriately checking for the existence of the target. Since the point |
| of |
| the operator is to check for the existence of the target at run-time, the |
| compiler no longer checks for the target existence. |
| |
| Fixed a problem where errors generated from the internal AML interpreter |
| during constant folding were not handled properly, causing a fault. |
| |
| Fixed a problem with overly aggressive range checking for the Stall |
| operator. The valid range (max 255) is now only checked if the operand is |
| of |
| type Integer. All other operand types cannot be statically checked. |
| |
| Fixed a problem where control method references within the RefOf, |
| DeRefOf, |
| and ObjectType operators were not treated properly. They are now treated |
| as |
| actual references, not method invocations. |
| |
| Fixed and enhanced the "list namespace" option (-ln). This option was |
| broken |
| a number of releases ago. |
| |
| Improved error handling for the Field, IndexField, and BankField |
| operators. |
| The compiler now cleanly reports and recovers from errors in the field |
| component (FieldUnit) list. |
| |
| Fixed a disassembler problem where the optional ResourceDescriptor fields |
| TRS and TTP were not always handled correctly. |
| |
| Disassembler - Comments in output now use "//" instead of "/*" |
| |
| ---------------------------------------- |
| 28 February 2005. Summary of changes for version 20050228: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where the result of an Index() operator (an object |
| reference) must increment the reference count on the target object for |
| the |
| life of the object reference. |
| |
| Implemented AML Interpreter and Debugger support for the new ACPI 3.0 |
| Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and |
| WordSpace |
| resource descriptors. |
| |
| Implemented support in the _OSI method for the ACPI 3.0 "Extended Address |
| Space Descriptor" string, indicating interpreter support for the |
| descriptors |
| above. |
| |
| Implemented header support for the new ACPI 3.0 FADT flag bits. |
| |
| Implemented header support for the new ACPI 3.0 PCI Express bits for the |
| PM1 |
| status/enable registers. |
| |
| Updated header support for the MADT processor local Apic struct and MADT |
| platform interrupt source struct for new ACPI 3.0 fields. |
| |
| Implemented header support for the SRAT and SLIT ACPI tables. |
| |
| Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" |
| flag |
| at runtime. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total |
| Debug Version: 164.9K Code, 69.2K Data, 234.1K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.4K Code, 69.6K Data, 236.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with the internal 64-bit String-to-integer conversion |
| with |
| strings less than two characters long. |
| |
| Fixed a problem with constant folding where the result of the Index() |
| operator can not be considered a constant. This means that Index() cannot |
| be |
| a type3 opcode and this will require an update to the ACPI specification. |
| |
| Disassembler: Implemented support for the TTP, MTP, and TRS resource |
| descriptor fields. These fields were inadvertently ignored and not output |
| in |
| the disassembly of the resource descriptor. |
| |
| |
| ---------------------------------------- |
| 11 February 2005. Summary of changes for version 20050211: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented ACPI 3.0 support for implicit conversion within the Match() |
| operator. MatchObjects can now be of type integer, buffer, or string |
| instead |
| of just type integer. Package elements are implicitly converted to the |
| type |
| of the MatchObject. This change aligns the behavior of Match() with the |
| behavior of the other logical operators (LLess(), etc.) It also requires |
| an |
| errata change to the ACPI specification as this support was intended for |
| ACPI 3.0, but was inadvertently omitted. |
| |
| Fixed a problem with the internal implicit "to buffer" conversion. |
| Strings |
| that are converted to buffers will cause buffer truncation if the string |
| is |
| smaller than the target buffer. Integers that are converted to buffers |
| will |
| not cause buffer truncation, only zero extension (both as per the ACPI |
| spec.) The problem was introduced when code was added to truncate the |
| buffer, but this should not be performed in all cases, only the string |
| case. |
| |
| Fixed a problem with the Buffer and Package operators where the |
| interpreter |
| would get confused if two such operators were used as operands to an ASL |
| operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result |
| stack was not being popped after the execution of these operators, |
| resulting |
| in an AE_NO_RETURN_VALUE exception. |
| |
| Fixed a problem with constructs of the form Store(Index(...),...). The |
| reference object returned from Index was inadvertently resolved to an |
| actual |
| value. This problem was introduced in version 20050114 when the behavior |
| of |
| Store() was modified to restrict the object types that can be used as the |
| source operand (to match the ACPI specification.) |
| |
| Reduced excessive stack use within the AcpiGetObjectInfo procedure. |
| |
| Added a fix to aclinux.h to allow generation of AcpiExec on Linux. |
| |
| Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total |
| Debug Version: 164.8K Code, 69.2K Data, 234.0K Total |
| Current Release: |
| Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total |
| Debug Version: 164.9K Code, 69.2K Data, 234.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a code generation problem in the constant folding optimization code |
| where incorrect code was generated if a constant was reduced to a buffer |
| object (i.e., a reduced type 5 opcode.) |
| |
| Fixed a typechecking problem for the ToBuffer operator. Caused by an |
| incorrect return type in the internal opcode information table. |
| |
| ---------------------------------------- |
| 25 January 2005. Summary of changes for version 20050125: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a recently introduced problem with the Global Lock where the |
| underlying semaphore was not created. This problem was introduced in |
| version 20050114, and caused an AE_AML_NO_OPERAND exception during an |
| Acquire() operation on _GL. |
| |
| The local object cache is now optional, and is disabled by default. Both |
| AcpiExec and the iASL compiler enable the cache because they run in user |
| mode and this enhances their performance. #define |
| ACPI_ENABLE_OBJECT_CACHE |
| to enable the local cache. |
| |
| Fixed an issue in the internal function AcpiUtEvaluateObject concerning |
| the |
| optional "implicit return" support where an error was returned if no |
| return |
| object was expected, but one was implicitly returned. AE_OK is now |
| returned |
| in this case and the implicitly returned object is deleted. |
| AcpiUtEvaluateObject is only occasionally used, and only to execute |
| reserved |
| methods such as _STA and _INI where the return type is known up front. |
| |
| Fixed a few issues with the internal convert-to-integer code. It now |
| returns |
| an error if an attempt is made to convert a null string, a string of only |
| blanks/tabs, or a zero-length buffer. This affects both implicit |
| conversion |
| and explicit conversion via the ToInteger() operator. |
| |
| The internal debug code in AcpiUtAcquireMutex has been commented out. It |
| is |
| not needed for normal operation and should increase the performance of |
| the |
| entire subsystem. The code remains in case it is needed for debug |
| purposes |
| again. |
| |
| The AcpiExec source and makefile are included in the Unix/Linux package |
| for |
| the first time. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total |
| Debug Version: 165.4K Code, 69.4K Data, 234.8K Total |
| Current Release: |
| Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total |
| Debug Version: 164.8K Code, 69.2K Data, 234.0K Total |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Switch/Case support: A warning is now issued if the type of the Switch |
| value |
| cannot be determined at compile time. For example, Switch(Arg0) will |
| generate the warning, and the type is assumed to be an integer. As per |
| the |
| ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate |
| the |
| warning. |
| |
| Switch/Case support: Implemented support for buffer and string objects as |
| the switch value. This is an ACPI 3.0 feature, now that LEqual supports |
| buffers and strings. |
| |
| Switch/Case support: The emitted code for the LEqual() comparisons now |
| uses |
| the switch value as the first operand, not the second. The case value is |
| now |
| the second operand, and this allows the case value to be implicitly |
| converted to the type of the switch value, not the other way around. |
| |
| Switch/Case support: Temporary variables are now emitted immediately |
| within |
| the control method, not at the global level. This means that there are |
| now |
| 36 temps available per-method, not 36 temps per-module as was the case |
| with |
| the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) |
| |
| ---------------------------------------- |
| 14 January 2005. Summary of changes for version 20050114: |
| |
| Added 2005 copyright to all module headers. This affects every module in |
| the core subsystem, iASL compiler, and the utilities. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed an issue with the String-to-Buffer conversion code where the string |
| null terminator was not included in the buffer after conversion, but |
| there |
| is existing ASL that assumes the string null terminator is included. This |
| is |
| the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was |
| introduced in the previous version when the code was updated to correctly |
| set the converted buffer size as per the ACPI specification. The ACPI |
| spec |
| is ambiguous and will be updated to specify that the null terminator must |
| be |
| included in the converted buffer. This also affects the ToBuffer() ASL |
| operator. |
| |
| Fixed a problem with the Mid() ASL/AML operator where it did not work |
| correctly on Buffer objects. Newly created sub-buffers were not being |
| marked |
| as initialized. |
| |
| |
| Fixed a problem in AcpiTbFindTable where incorrect string compares were |
| performed on the OemId and OemTableId table header fields. These fields |
| are |
| not null terminated, so strncmp is now used instead of strcmp. |
| |
| Implemented a restriction on the Store() ASL/AML operator to align the |
| behavior with the ACPI specification. Previously, any object could be |
| used |
| as the source operand. Now, the only objects that may be used are |
| Integers, |
| Buffers, Strings, Packages, Object References, and DDB Handles. If |
| necessary, the original behavior can be restored by enabling the |
| EnableInterpreterSlack flag. |
| |
| Enhanced the optional "implicit return" support to allow an implicit |
| return |
| value from methods that are invoked externally via the AcpiEvaluateObject |
| interface. This enables implicit returns from the _STA and _INI methods, |
| for example. |
| |
| Changed the Revision() ASL/AML operator to return the current version of |
| the |
| AML interpreter, in the YYYYMMDD format. Previously, it incorrectly |
| returned |
| the supported ACPI version (This is the function of the _REV method). |
| |
| Updated the _REV predefined method to return the currently supported |
| version |
| of ACPI, now 3. |
| |
| Implemented batch mode option for the AcpiExec utility (-b). |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.3K Code, 69.4K Data, 234.7K Total |
| Current Release: |
| Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total |
| Debug Version: 165.4K Code, 69.4K Data, 234.8K Total |
| |
| ---------------------------------------- |
| 10 December 2004. Summary of changes for version 20041210: |
| |
| ACPI 3.0 support is nearing completion in both the iASL compiler and the |
| ACPI CA core subsystem. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem in the ToDecimalString operator where the resulting |
| string |
| length was incorrectly calculated. The length is now calculated exactly, |
| eliminating incorrect AE_STRING_LIMIT exceptions. |
| |
| Fixed a problem in the ToHexString operator to allow a maximum 200 |
| character |
| string to be produced. |
| |
| Fixed a problem in the internal string-to-buffer and buffer-to-buffer |
| copy |
| routine where the length of the resulting buffer was not truncated to the |
| new size (if the target buffer already existed). |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 164.7K Code, 68.5K Data, 233.2K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 165.3K Code, 69.4K Data, 234.7K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented the new ACPI 3.0 resource template macros - DWordSpace, |
| ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. |
| Includes support in the disassembler. |
| |
| Implemented support for the new (ACPI 3.0) parameter to the Register |
| macro, |
| AccessSize. |
| |
| Fixed a problem where the _HE resource name for the Interrupt macro was |
| referencing bit 0 instead of bit 1. |
| |
| Implemented check for maximum 255 interrupts in the Interrupt macro. |
| |
| Fixed a problem with the predefined resource descriptor names where |
| incorrect AML code was generated if the offset within the resource buffer |
| was 0 or 1. The optimizer shortened the AML code to a single byte opcode |
| but did not update the surrounding package lengths. |
| |
| Changes to the Dma macro: All channels within the channel list must be |
| in |
| the range 0-7. Maximum 8 channels can be specified. BusMaster operand is |
| optional (default is BusMaster). |
| |
| Implemented check for maximum 7 data bytes for the VendorShort macro. |
| |
| The ReadWrite parameter is now optional for the Memory32 and similar |
| macros. |
| |
| ---------------------------------------- |
| 03 December 2004. Summary of changes for version 20041203: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The low-level field insertion/extraction code (exfldio) has been |
| completely |
| rewritten to eliminate unnecessary complexity, bugs, and boundary |
| conditions. |
| |
| Fixed a problem in the ToInteger, ToBuffer, ToHexString, and |
| ToDecimalString |
| operators where the input operand could be inadvertently deleted if no |
| conversion was necessary (e.g., if the input to ToInteger was an Integer |
| object.) |
| |
| Fixed a problem with the ToDecimalString and ToHexString where an |
| incorrect |
| exception code was returned if the resulting string would be > 200 chars. |
| AE_STRING_LIMIT is now returned. |
| |
| Fixed a problem with the Concatenate operator where AE_OK was always |
| returned, even if the operation failed. |
| |
| Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 |
| semaphores to be allocated. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total |
| Debug Version: 165.2K Code, 68.6K Data, 233.8K Total |
| Current Release: |
| Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total |
| Debug Version: 164.7K Code, 68.5K Data, 233.2K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed typechecking for the ObjectType and SizeOf operators. Problem was |
| recently introduced in 20041119. |
| |
| Fixed a problem with the ToUUID macro where the upper nybble of each |
| buffer |
| byte was inadvertently set to zero. |
| |
| ---------------------------------------- |
| 19 November 2004. Summary of changes for version 20041119: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem in the internal ConvertToInteger routine where new |
| integers |
| were not truncated to 32 bits for 32-bit ACPI tables. This routine |
| converts |
| buffers and strings to integers. |
| |
| Implemented support to store a value to an Index() on a String object. |
| This |
| is an ACPI 2.0 feature that had not yet been implemented. |
| |
| Implemented new behavior for storing objects to individual package |
| elements |
| (via the Index() operator). The previous behavior was to invoke the |
| implicit |
| conversion rules if an object was already present at the index. The new |
| behavior is to simply delete any existing object and directly store the |
| new |
| object. Although the ACPI specification seems unclear on this subject, |
| other |
| ACPI implementations behave in this manner. (This is the root of the |
| AE_BAD_HEX_CONSTANT issue.) |
| |
| Modified the RSDP memory scan mechanism to support the extended checksum |
| for |
| ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid |
| RSDP signature is found with a valid checksum. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total |
| Debug Version: 165.2K Code, 68.6K Data, 233.8K Total |
| Current Release: |
| Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total |
| Debug Version: 165.2K Code, 68.6K Data, 233.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a missing semicolon in the aslcompiler.y file. |
| |
| ---------------------------------------- |
| 05 November 2004. Summary of changes for version 20041105: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for FADT revision 2. This was an interim table |
| (between |
| ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. |
| |
| Implemented optional support to allow uninitialized LocalX and ArgX |
| variables in a control method. The variables are initialized to an |
| Integer |
| object with a value of zero. This support is enabled by setting the |
| AcpiGbl_EnableInterpreterSlack flag to TRUE. |
| |
| Implemented support for Integer objects for the SizeOf operator. Either |
| 4 |
| or 8 is returned, depending on the current integer size (32-bit or 64- |
| bit, |
| depending on the parent table revision). |
| |
| Fixed a problem in the implementation of the SizeOf and ObjectType |
| operators |
| where the operand was resolved to a value too early, causing incorrect |
| return values for some objects. |
| |
| Fixed some possible memory leaks during exceptional conditions. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total |
| Debug Version: 164.8K Code, 68.6K Data, 233.4K Total |
| Current Release: |
| Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total |
| Debug Version: 165.2K Code, 68.6K Data, 233.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support for all ACPI 3.0 reserved names and methods. |
| |
| Implemented all ACPI 3.0 grammar elements in the front-end, including |
| support for semicolons. |
| |
| Implemented the ACPI 3.0 Function() and ToUUID() macros |
| |
| Fixed a problem in the disassembler where a Scope() operator would not be |
| emitted properly if the target of the scope was in another table. |
| |
| ---------------------------------------- |
| 15 October 2004. Summary of changes for version 20041015: |
| |
| Note: ACPI CA is currently undergoing an in-depth and complete formal |
| evaluation to test/verify the following areas. Other suggestions are |
| welcome. This will result in an increase in the frequency of releases and |
| the number of bug fixes in the next few months. |
| - Functional tests for all ASL/AML operators |
| - All implicit/explicit type conversions |
| - Bit fields and operation regions |
| - 64-bit math support and 32-bit-only "truncated" math support |
| - Exceptional conditions, both compiler and interpreter |
| - Dynamic object deletion and memory leaks |
| - ACPI 3.0 support when implemented |
| - External interfaces to the ACPI subsystem |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed two alignment issues on 64-bit platforms - within debug statements |
| in |
| AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the |
| Address |
| field within the non-aligned ACPI generic address structure. |
| |
| Fixed a problem in the Increment and Decrement operators where incorrect |
| operand resolution could result in the inadvertent modification of the |
| original integer when the integer is passed into another method as an |
| argument and the arg is then incremented/decremented. |
| |
| Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- |
| bit |
| BCD number were truncated during conversion. |
| |
| Fixed a problem in the ToDecimal operator where the length of the |
| resulting |
| string could be set incorrectly too long if the input operand was a |
| Buffer |
| object. |
| |
| Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte |
| (0) |
| within a buffer would prematurely terminate a compare between buffer |
| objects. |
| |
| Added a check for string overflow (>200 characters as per the ACPI |
| specification) during the Concatenate operator with two string operands. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total |
| Debug Version: 164.6K Code, 68.5K Data, 233.1K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total |
| Debug Version: 164.8K Code, 68.6K Data, 233.4K Total |
| |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Allow the use of the ObjectType operator on uninitialized Locals and Args |
| (returns 0 as per the ACPI specification). |
| |
| Fixed a problem where the compiler would fault if there was a syntax |
| error |
| in the FieldName of all of the various CreateXXXField operators. |
| |
| Disallow the use of lower case letters within the EISAID macro, as per |
| the |
| ACPI specification. All EISAID strings must be of the form "UUUNNNN" |
| Where |
| U is an uppercase letter and N is a hex digit. |
| |
| |
| ---------------------------------------- |
| 06 October 2004. Summary of changes for version 20041006: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for the ACPI 3.0 Timer operator. This ASL function |
| implements a 64-bit timer with 100 nanosecond granularity. |
| |
| Defined a new OSL interface, AcpiOsGetTimer. This interface is used to |
| implement the ACPI 3.0 Timer operator. This allows the host OS to |
| implement |
| the timer with the best clock available. Also, it keeps the core |
| subsystem |
| out of the clock handling business, since the host OS (usually) performs |
| this function. |
| |
| Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) |
| functions use a 64-bit address which is part of the packed ACPI Generic |
| Address Structure. Since the structure is non-aligned, the alignment |
| macros |
| are now used to extract the address to a local variable before use. |
| |
| Fixed a problem where the ToInteger operator assumed all input strings |
| were |
| hexadecimal. The operator now handles both decimal strings and hex |
| strings |
| (prefixed with "0x"). |
| |
| Fixed a problem where the string length in the string object created as a |
| result of the internal ConvertToString procedure could be incorrect. This |
| potentially affected all implicit conversions and also the |
| ToDecimalString |
| and ToHexString operators. |
| |
| Fixed two problems in the ToString operator. If the length parameter was |
| zero, an incorrect string object was created and the value of the input |
| length parameter was inadvertently changed from zero to Ones. |
| |
| Fixed a problem where the optional ResourceSource string in the |
| ExtendedIRQ |
| resource macro was ignored. |
| |
| Simplified the interfaces to the internal division functions, reducing |
| code |
| size and complexity. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total |
| Debug Version: 164.5K Code, 68.3K Data, 232.8K Total |
| Current Release: |
| Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total |
| Debug Version: 164.6K Code, 68.5K Data, 233.1K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support for the ACPI 3.0 Timer operator. |
| |
| Fixed a problem where the Default() operator was inadvertently ignored in |
| a |
| Switch/Case block. This was a problem in the translation of the Switch |
| statement to If...Else pairs. |
| |
| Added support to allow a standalone Return operator, with no parentheses |
| (or |
| operands). |
| |
| Fixed a problem with code generation for the ElseIf operator where the |
| translated Else...If parse tree was improperly constructed leading to the |
| loss of some code. |
| |
| ---------------------------------------- |
| 22 September 2004. Summary of changes for version 20040922: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem with the implementation of the LNot() operator where |
| "Ones" |
| was not returned for the TRUE case. Changed the code to return Ones |
| instead |
| of (!Arg) which was usually 1. This change affects iASL constant folding |
| for |
| this operator also. |
| |
| Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was |
| not |
| initialized properly -- Now zero the entire buffer in this case where the |
| buffer already exists. |
| |
| Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 |
| Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all |
| related code considerably. This will require changes/updates to all OS |
| interface layers (OSLs.) |
| |
| Implemented a new external interface, AcpiInstallExceptionHandler, to |
| allow |
| a system exception handler to be installed. This handler is invoked upon |
| any |
| run-time exception that occurs during control method execution. |
| |
| Added support for the DSDT in AcpiTbFindTable. This allows the |
| DataTableRegion() operator to access the local copy of the DSDT. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total |
| Debug Version: 164.2K Code, 68.2K Data, 232.4K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total |
| Debug Version: 164.5K Code, 68.3K Data, 232.8K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem with constant folding and the LNot operator. LNot was |
| returning 1 in the TRUE case, not Ones as per the ACPI specification. |
| This |
| could result in the generation of an incorrect folded/reduced constant. |
| |
| End-Of-File is now allowed within a "//"-style comment. A parse error no |
| longer occurs if such a comment is at the very end of the input ASL |
| source |
| file. |
| |
| Implemented the "-r" option to override the Revision in the table header. |
| The initial use of this option will be to simplify the evaluation of the |
| AML |
| interpreter by allowing a single ASL source module to be compiled for |
| either |
| 32-bit or 64-bit integers. |
| |
| |
| ---------------------------------------- |
| 27 August 2004. Summary of changes for version 20040827: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| - Implemented support for implicit object conversion in the non-numeric |
| logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, |
| and |
| LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; |
| the second operand is implicitly converted on the fly to match the type |
| of |
| the first operand. For example: |
| |
| LEqual (Source1, Source2) |
| |
| Source1 and Source2 must each evaluate to an integer, a string, or a |
| buffer. |
| The data type of Source1 dictates the required type of Source2. Source2 |
| is |
| implicitly converted if necessary to match the type of Source1. |
| |
| - Updated and corrected the behavior of the string conversion support. |
| The |
| rules concerning conversion of buffers to strings (according to the ACPI |
| specification) are as follows: |
| |
| ToDecimalString - explicit byte-wise conversion of buffer to string of |
| decimal values (0-255) separated by commas. ToHexString - explicit byte- |
| wise |
| conversion of buffer to string of hex values (0-FF) separated by commas. |
| ToString - explicit byte-wise conversion of buffer to string. Byte-by- |
| byte |
| copy with no transform except NULL terminated. Any other implicit buffer- |
| to- |
| string conversion - byte-wise conversion of buffer to string of hex |
| values |
| (0-FF) separated by spaces. |
| |
| - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. |
| |
| - Fixed a problem in AcpiNsGetPathnameLength where the returned length |
| was |
| one byte too short in the case of a node in the root scope. This could |
| cause a fault during debug output. |
| |
| - Code and Data Size: Current and previous core subsystem library sizes |
| are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total |
| Debug Version: 164.1K Code, 68.3K Data, 232.4K Total |
| Current Release: |
| Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total |
| Debug Version: 164.2K Code, 68.2K Data, 232.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| - Fixed a Linux generation error. |
| |
| |
| ---------------------------------------- |
| 16 August 2004. Summary of changes for version 20040816: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Designed and implemented support within the AML interpreter for the so- |
| called "implicit return". This support returns the result of the last |
| ASL |
| operation within a control method, in the absence of an explicit Return() |
| operator. A few machines depend on this behavior, even though it is not |
| explicitly supported by the ASL language. It is optional support that |
| can |
| be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. |
| |
| Removed support for the PCI_Config address space from the internal low |
| level |
| hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This |
| support was not used internally, and would not work correctly anyway |
| because |
| the PCI bus number and segment number were not supported. There are |
| separate interfaces for PCI configuration space access because of the |
| unique |
| interface. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total |
| Debug Version: 164.1K Code, 68.2K Data, 232.3K Total |
| Current Release: |
| Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total |
| Debug Version: 164.1K Code, 68.3K Data, 232.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a problem where constants in ASL expressions at the root level (not |
| within a control method) could be inadvertently truncated during code |
| generation. This problem was introduced in the 20040715 release. |
| |
| |
| ---------------------------------------- |
| 15 July 2004. Summary of changes for version 20040715: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Restructured the internal HW GPE interfaces to pass/track the current |
| state |
| of interrupts (enabled/disabled) in order to avoid possible deadlock and |
| increase flexibility of the interfaces. |
| |
| Implemented a "lexicographical compare" for String and Buffer objects |
| within |
| the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - |
| - |
| as per further clarification to the ACPI specification. Behavior is |
| similar |
| to C library "strcmp". |
| |
| Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable |
| external function. In the 32-bit non-debug case, the stack use has been |
| reduced from 168 bytes to 32 bytes. |
| |
| Deployed a new run-time configuration flag, |
| AcpiGbl_EnableInterpreterSlack, |
| whose purpose is to allow the AML interpreter to forgive certain bad AML |
| constructs. Default setting is FALSE. |
| |
| Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field |
| IO |
| support code. If enabled, it allows field access to go beyond the end of |
| a |
| region definition if the field is within the region length rounded up to |
| the |
| next access width boundary (a common coding error.) |
| |
| Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to |
| ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, |
| these |
| symbols are lowercase by the latest version of the AcpiSrc tool. |
| |
| The prototypes for the PCI interfaces in acpiosxf.h have been updated to |
| rename "Register" to simply "Reg" to prevent certain compilers from |
| complaining. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total |
| Debug Version: 163.8K Code, 68.2K Data, 232.0K Total |
| Current Release: |
| Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total |
| Debug Version: 164.1K Code, 68.2K Data, 232.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented full support for Package objects within the Case() operator. |
| Note: The Break() operator is currently not supported within Case blocks |
| (TermLists) as there is some question about backward compatibility with |
| ACPI |
| 1.0 interpreters. |
| |
| |
| Fixed a problem where complex terms were not supported properly within |
| the |
| Switch() operator. |
| |
| Eliminated extraneous warning for compiler-emitted reserved names of the |
| form "_T_x". (Used in Switch/Case operators.) |
| |
| Eliminated optimization messages for "_T_x" objects and small constants |
| within the DefinitionBlock operator. |
| |
| |
| ---------------------------------------- |
| 15 June 2004. Summary of changes for version 20040615: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for Buffer and String objects (as per ACPI 2.0) for |
| the |
| following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and |
| LLessEqual. |
| |
| All directory names in the entire source package are lower case, as they |
| were in earlier releases. |
| |
| Implemented "Disassemble" command in the AML debugger that will |
| disassemble |
| a single control method. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total |
| Debug Version: 163.3K Code, 67.2K Data, 230.5K Total |
| |
| Current Release: |
| Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total |
| Debug Version: 163.8K Code, 68.2K Data, 232.0K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented support for Buffer and String objects (as per ACPI 2.0) for |
| the |
| following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and |
| LLessEqual. |
| |
| All directory names in the entire source package are lower case, as they |
| were in earlier releases. |
| |
| Fixed a fault when using the -g or -d<nofilename> options if the FADT was |
| not found. |
| |
| Fixed an issue with the Windows version of the compiler where later |
| versions |
| of Windows place the FADT in the registry under the name "FADT" and not |
| "FACP" as earlier versions did. This applies when using the -g or - |
| d<nofilename> options. The compiler now looks for both strings as |
| necessary. |
| |
| Fixed a problem with compiler namepath optimization where a namepath |
| within |
| the Scope() operator could not be optimized if the namepath was a subpath |
| of |
| the current scope path. |
| |
| ---------------------------------------- |
| 27 May 2004. Summary of changes for version 20040527: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed a new design and implementation for EBDA (Extended BIOS Data |
| Area) |
| support in the RSDP scan code. The original code improperly scanned for |
| the |
| EBDA by simply scanning from memory location 0 to 0x400. The correct |
| method |
| is to first obtain the EBDA pointer from within the BIOS data area, then |
| scan 1K of memory starting at the EBDA pointer. There appear to be few |
| if |
| any machines that place the RSDP in the EBDA, however. |
| |
| Integrated a fix for a possible fault during evaluation of BufferField |
| arguments. Obsolete code that was causing the problem was removed. |
| |
| Found and fixed a problem in the Field Support Code where data could be |
| corrupted on a bit field read that starts on an aligned boundary but does |
| not end on an aligned boundary. Merged the read/write "datum length" |
| calculation code into a common procedure. |
| |
| Rolled in a couple of changes to the FreeBSD-specific header. |
| |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total |
| Debug Version: 163.2K Code, 67.2K Data, 230.4K Total |
| Current Release: |
| Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total |
| Debug Version: 163.3K Code, 67.2K Data, 230.5K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed a generation warning produced by some overly-verbose compilers for |
| a |
| 64-bit constant. |
| |
| ---------------------------------------- |
| 14 May 2004. Summary of changes for version 20040514: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where hardware GPE enable bits sometimes not set properly |
| during and after GPE method execution. Result of 04/27 changes. |
| |
| Removed extra "clear all GPEs" when sleeping/waking. |
| |
| Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single |
| AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above |
| to |
| the new AcpiEv* calls as appropriate. |
| |
| ACPI_OS_NAME was removed from the OS-specific headers. The default name |
| is |
| now "Microsoft Windows NT" for maximum compatibility. However this can |
| be |
| changed by modifying the acconfig.h file. |
| |
| Allow a single invocation of AcpiInstallNotifyHandler for a handler that |
| traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. |
| |
| Run _INI methods on ThermalZone objects. This is against the ACPI |
| specification, but there is apparently ASL code in the field that has |
| these |
| _INI methods, and apparently "other" AML interpreters execute them. |
| |
| Performed a full 16/32/64 bit lint that resulted in some small changes. |
| |
| Added a sleep simulation command to the AML debugger to test sleep code. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total |
| Debug Version: 162.9K Code, 67.0K Data, 229.9K Total |
| Current Release: |
| Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total |
| Debug Version: 163.2K Code, 67.2K Data, 230.4K Total |
| |
| ---------------------------------------- |
| 27 April 2004. Summary of changes for version 20040427: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed a major overhaul of the GPE handling within ACPI CA. There are |
| now three types of GPEs: wake-only, runtime-only, and combination |
| wake/run. |
| The only GPEs allowed to be combination wake/run are for button-style |
| devices such as a control-method power button, control-method sleep |
| button, |
| or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are |
| not |
| referenced by any _PRW methods are marked for "runtime" and hardware |
| enabled. Any GPE that is referenced by a _PRW method is marked for |
| "wake" |
| (and disabled at runtime). However, at sleep time, only those GPEs that |
| have been specifically enabled for wake via the AcpiEnableGpe interface |
| will |
| actually be hardware enabled. |
| |
| A new external interface has been added, AcpiSetGpeType(), that is meant |
| to |
| be used by device drivers to force a GPE to a particular type. It will |
| be |
| especially useful for the drivers for the button devices mentioned above. |
| |
| Completed restructuring of the ACPI CA initialization sequence so that |
| default operation region handlers are installed before GPEs are |
| initialized |
| and the _PRW methods are executed. This will prevent errors when the |
| _PRW |
| methods attempt to access system memory or I/O space. |
| |
| GPE enable/disable no longer reads the GPE enable register. We now keep |
| the |
| enable info for runtime and wake separate and in the GPE_EVENT_INFO. We |
| thus no longer depend on the hardware to maintain these bits. |
| |
| Always clear the wake status and fixed/GPE status bits before sleep, even |
| for state S5. |
| |
| Improved the AML debugger output for displaying the GPE blocks and their |
| current status. |
| |
| Added new strings for the _OSI method, of the form "Windows 2001 SPx" |
| where |
| x = 0,1,2,3,4. |
| |
| Fixed a problem where the physical address was incorrectly calculated |
| when |
| the Load() operator was used to directly load from an Operation Region |
| (vs. |
| loading from a Field object.) Also added check for minimum table length |
| for |
| this case. |
| |
| Fix for multiple mutex acquisition. Restore original thread SyncLevel on |
| mutex release. |
| |
| Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for |
| consistency with the other fields returned. |
| |
| Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such |
| structure for each GPE in the system, so the size of this structure is |
| important. |
| |
| CPU stack requirement reduction: Cleaned up the method execution and |
| object |
| evaluation paths so that now a parameter structure is passed, instead of |
| copying the various method parameters over and over again. |
| |
| In evregion.c: Correctly exit and reenter the interpreter region if and |
| only if dispatching an operation region request to a user-installed |
| handler. |
| Do not exit/reenter when dispatching to a default handler (e.g., default |
| system memory or I/O handlers) |
| |
| |
| Notes for updating drivers for the new GPE support. The following |
| changes |
| must be made to ACPI-related device drivers that are attached to one or |
| more |
| GPEs: (This information will be added to the ACPI CA Programmer |
| Reference.) |
| |
| 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you |
| must |
| explicitly call AcpiEnableGpe. |
| 2) There is a new interface called AcpiSetGpeType. This should be called |
| before enabling the GPE. Also, this interface will automatically disable |
| the GPE if it is currently enabled. |
| 3) AcpiEnableGpe no longer supports a GPE type flag. |
| |
| Specific drivers that must be changed: |
| 1) EC driver: |
| AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, |
| AeGpeHandler, NULL); |
| AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); |
| AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); |
| |
| 2) Button Drivers (Power, Lid, Sleep): |
| Run _PRW method under parent device |
| If _PRW exists: /* This is a control-method button */ |
| Extract GPE number and possibly GpeDevice |
| AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); |
| AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); |
| |
| For all other devices that have _PRWs, we automatically set the GPE type |
| to |
| ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. |
| This |
| must be done on a selective basis, usually requiring some kind of user |
| app |
| to allow the user to pick the wake devices. |
| |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total |
| Debug Version: 161.0K Code, 66.3K Data, 227.3K Total |
| Current Release: |
| |
| Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total |
| Debug Version: 162.9K Code, 67.0K Data, 229.9K Total |
| |
| |
| |
| ---------------------------------------- |
| 02 April 2004. Summary of changes for version 20040402: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed an interpreter problem where an indirect store through an ArgX |
| parameter was incorrectly applying the "implicit conversion rules" during |
| the store. From the ACPI specification: "If the target is a method local |
| or |
| argument (LocalX or ArgX), no conversion is performed and the result is |
| stored directly to the target". The new behavior is to disable implicit |
| conversion during ALL stores to an ArgX. |
| |
| Changed the behavior of the _PRW method scan to ignore any and all errors |
| returned by a given _PRW. This prevents the scan from aborting from the |
| failure of any single _PRW. |
| |
| Moved the runtime configuration parameters from the global init procedure |
| to |
| static variables in acglobal.h. This will allow the host to override the |
| default values easily. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total |
| Debug Version: 160.8K Code, 66.1K Data, 226.9K Total |
| Current Release: |
| Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total |
| Debug Version: 161.0K Code, 66.3K Data, 227.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| iASL now fully disassembles SSDTs. However, External() statements are |
| not |
| generated automatically for unresolved symbols at this time. This is a |
| planned feature for future implementation. |
| |
| Fixed a scoping problem in the disassembler that occurs when the type of |
| the |
| target of a Scope() operator is overridden. This problem caused an |
| incorrectly nested internal namespace to be constructed. |
| |
| Any warnings or errors that are emitted during disassembly are now |
| commented |
| out automatically so that the resulting file can be recompiled without |
| any |
| hand editing. |
| |
| ---------------------------------------- |
| 26 March 2004. Summary of changes for version 20040326: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for "wake" GPEs via interaction between GPEs and the |
| _PRW methods. Every GPE that is pointed to by one or more _PRWs is |
| identified as a WAKE GPE and by default will no longer be enabled at |
| runtime. Previously, we were blindly enabling all GPEs with a |
| corresponding |
| _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. |
| We |
| believe this has been the cause of thousands of "spurious" GPEs on some |
| systems. |
| |
| This new GPE behavior is can be reverted to the original behavior (enable |
| ALL GPEs at runtime) via a runtime flag. |
| |
| Fixed a problem where aliased control methods could not access objects |
| properly. The proper scope within the namespace was not initialized |
| (transferred to the target of the aliased method) before executing the |
| target method. |
| |
| Fixed a potential race condition on internal object deletion on the |
| return |
| object in AcpiEvaluateObject. |
| |
| Integrated a fix for resource descriptors where both _MEM and _MTP were |
| being extracted instead of just _MEM. (i.e. bitmask was incorrectly too |
| wide, 0x0F instead of 0x03.) |
| |
| Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, |
| preventing |
| a |
| fault in some cases. |
| |
| Updated Notify() values for debug statements in evmisc.c |
| |
| Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| |
| Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total |
| Debug Version: 160.3K Code, 66.0K Data, 226.3K Total |
| Current Release: |
| Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total |
| Debug Version: 160.8K Code, 66.1K Data, 226.9K Total |
| |
| ---------------------------------------- |
| 11 March 2004. Summary of changes for version 20040311: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where errors occurring during the parse phase of control |
| method execution did not abort cleanly. For example, objects created and |
| installed in the namespace were not deleted. This caused all subsequent |
| invocations of the method to return the AE_ALREADY_EXISTS exception. |
| |
| Implemented a mechanism to force a control method to "Serialized" |
| execution |
| if the method attempts to create namespace objects. (The root of the |
| AE_ALREADY_EXISTS problem.) |
| |
| Implemented support for the predefined _OSI "internal" control method. |
| Initial supported strings are "Linux", "Windows 2000", "Windows 2001", |
| and |
| "Windows 2001.1", and can be easily upgraded for new strings as |
| necessary. |
| This feature will allow "other" operating systems to execute the fully |
| tested, "Windows" code path through the ASL code |
| |
| Global Lock Support: Now allows multiple acquires and releases with any |
| internal thread. Removed concept of "owning thread" for this special |
| mutex. |
| |
| Fixed two functions that were inappropriately declaring large objects on |
| the |
| CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage |
| during |
| method execution considerably. |
| |
| Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the |
| S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. |
| |
| Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs |
| defined on the machine. |
| |
| Implemented two runtime options: One to force all control method |
| execution |
| to "Serialized" to mimic Windows behavior, another to disable _OSI |
| support |
| if it causes problems on a given machine. |
| |
| Code and Data Size: Current and previous core subsystem library sizes are |
| shown below. These are the code and data sizes for the acpica.lib |
| produced |
| by the Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code includes the |
| debug output trace mechanism and has a much larger code and data size. |
| Note |
| that these values will vary depending on the efficiency of the compiler |
| and |
| the compiler options used during generation. |
| |
| Previous Release: |
| Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total |
| Debug Version: 158.7K Code, 65.1K Data, 223.8K Total |
| Current Release: |
| Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total |
| Debug Version: 160.3K Code, 66.0K Data, 226.3K Total |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Fixed an array size problem for FreeBSD that would cause the compiler to |
| fault. |
| |
| ---------------------------------------- |
| 20 February 2004. Summary of changes for version 20040220: |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented execution of _SxD methods for Device objects in the |
| GetObjectInfo interface. |
| |
| Fixed calls to _SST method to pass the correct arguments. |
| |
| Added a call to _SST on wake to restore to "working" state. |
| |
| Check for End-Of-Buffer failure case in the WalkResources interface. |
| |
| Integrated fix for 64-bit alignment issue in acglobal.h by moving two |
| structures to the beginning of the file. |
| |
| After wake, clear GPE status register(s) before enabling GPEs. |
| |
| After wake, clear/enable power button. (Perhaps we should clear/enable |
| all |
| fixed events upon wake.) |
| |
| Fixed a couple of possible memory leaks in the Namespace manager. |
| |
| Integrated latest acnetbsd.h file. |
| |
| ---------------------------------------- |
| 11 February 2004. Summary of changes for version 20040211: |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Completed investigation and implementation of the call-by-reference |
| mechanism for control method arguments. |
| |
| Fixed a problem where a store of an object into an indexed package could |
| fail if the store occurs within a different method than the method that |
| created the package. |
| |
| Fixed a problem where the ToDecimal operator could return incorrect |
| results. |
| |
| Fixed a problem where the CopyObject operator could fail on some of the |
| more |
| obscure objects (e.g., Reference objects.) |
| |
| Improved the output of the Debug object to display buffer, package, and |
| index objects. |
| |
| Fixed a problem where constructs of the form "RefOf (ArgX)" did not |
| return |
| the expected result. |
| |
| Added permanent ACPI_REPORT_ERROR macros for all instances of the |
| ACPI_AML_INTERNAL exception. |
| |
| Integrated latest version of acfreebsd.h |
| |
| ---------------------------------------- |
| 16 January 2004. Summary of changes for version 20040116: |
| |
| The purpose of this release is primarily to update the copyright years in |
| each module, thus causing a huge number of diffs. There are a few small |
| functional changes, however. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Improved error messages when there is a problem finding one or more of |
| the |
| required base ACPI tables |
| |
| Reintroduced the definition of APIC_HEADER in actbl.h |
| |
| Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) |
| |
| Removed extraneous reference to NewObj in dsmthdat.c |
| |
| 2) iASL compiler |
| |
| Fixed a problem introduced in December that disabled the correct |
| disassembly |
| of Resource Templates |
| |
| |
| ---------------------------------------- |
| 03 December 2003. Summary of changes for version 20031203: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Changed the initialization of Operation Regions during subsystem |
| init to perform two entire walks of the ACPI namespace; The first |
| to initialize the regions themselves, the second to execute the |
| _REG methods. This fixed some interdependencies across _REG |
| methods found on some machines. |
| |
| Fixed a problem where a Store(Local0, Local1) could simply update |
| the object reference count, and not create a new copy of the |
| object if the Local1 is uninitialized. |
| |
| Implemented support for the _SST reserved method during sleep |
| transitions. |
| |
| Implemented support to clear the SLP_TYP and SLP_EN bits when |
| waking up, this is apparently required by some machines. |
| |
| When sleeping, clear the wake status only if SleepState is not S5. |
| |
| Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect |
| pointer arithmetic advanced a string pointer too far. |
| |
| Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer |
| could be returned if the requested table has not been loaded. |
| |
| Within the support for IRQ resources, restructured the handling of |
| the active and edge/level bits. |
| |
| Fixed a few problems in AcpiPsxExecute() where memory could be |
| leaked under certain error conditions. |
| |
| Improved error messages for the cases where the ACPI mode could |
| not be entered. |
| |
| Code and Data Size: Current and previous core subsystem library |
| sizes are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and |
| these values do not include any ACPI driver or OSPM code. The |
| debug version of the code includes the debug output trace |
| mechanism and has a much larger code and data size. Note that |
| these values will vary depending on the efficiency of the compiler |
| and the compiler options used during generation. |
| |
| Previous Release (20031029): |
| Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total |
| Debug Version: 158.3K Code, 65.0K Data, 223.3K Total |
| Current Release: |
| Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total |
| Debug Version: 158.7K Code, 65.1K Data, 223.8K Total |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Implemented a fix for the iASL disassembler where a bad index was |
| generated. This was most noticeable on 64-bit platforms |
| |
| |
| ---------------------------------------- |
| 29 October 2003. Summary of changes for version 20031029: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| |
| Fixed a problem where a level-triggered GPE with an associated |
| _Lxx control method was incorrectly cleared twice. |
| |
| Fixed a problem with the Field support code where an access can |
| occur beyond the end-of-region if the field is non-aligned but |
| extends to the very end of the parent region (resulted in an |
| AE_AML_REGION_LIMIT exception.) |
| |
| Fixed a problem with ACPI Fixed Events where an RT Clock handler |
| would not get invoked on an RTC event. The RTC event bitmasks for |
| the PM1 registers were not being initialized properly. |
| |
| Implemented support for executing _STA and _INI methods for |
| Processor objects. Although this is currently not part of the |
| ACPI specification, there is existing ASL code that depends on the |
| init-time execution of these methods. |
| |
| Implemented and deployed a GetDescriptorName function to decode |
| the various types of internal descriptors. Guards against null |
| descriptors during debug output also. |
| |
| Implemented and deployed a GetNodeName function to extract the 4- |
| character namespace node name. This function simplifies the debug |
| and error output, as well as guarding against null pointers during |
| output. |
| |
| Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to |
| simplify the debug and error output of 64-bit integers. This |
| macro replaces the HIDWORD and LODWORD macros for dumping these |
| integers. |
| |
| Updated the implementation of the Stall() operator to only call |
| AcpiOsStall(), and also return an error if the operand is larger |
| than 255. This preserves the required behavior of not |
| relinquishing the processor, as would happen if AcpiOsSleep() was |
| called for "long stalls". |
| |
| Constructs of the form "Store(LocalX,LocalX)" where LocalX is not |
| initialized are now treated as NOOPs. |
| |
| Cleaned up a handful of warnings during 64-bit generation. |
| |
| Fixed a reported error where and incorrect GPE number was passed |
| to the GPE dispatch handler. This value is only used for error |
| output, however. Used this opportunity to clean up and streamline |
| the GPE dispatch code. |
| |
| Code and Data Size: Current and previous core subsystem library |
| sizes are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and |
| these values do not include any ACPI driver or OSPM code. The |
| |
| debug version of the code includes the debug output trace |
| mechanism and has a much larger code and data size. Note that |
| these values will vary depending on the efficiency of the compiler |
| and the compiler options used during generation. |
| |
| Previous Release (20031002): |
| Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total |
| Debug Version: 157.9K Code, 64.8K Data, 222.7K Total |
| Current Release: |
| Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total |
| Debug Version: 158.3K Code, 65.0K Data, 223.3K Total |
| |
| |
| 2) iASL Compiler/Disassembler: |
| |
| Updated the iASL compiler to return an error if the operand to the |
| Stall() operator is larger than 255. |
| |
| |
| ---------------------------------------- |
| 02 October 2003. Summary of changes for version 20031002: |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem with Index Fields where the index was not |
| incremented for fields that require multiple writes to the |
| index/data registers (Fields that are wider than the data |
| register.) |
| |
| Fixed a problem with all Field objects where a write could go |
| beyond the end-of-field if the field was larger than the access |
| granularity and therefore required multiple writes to complete the |
| request. An extra write beyond the end of the field could happen |
| inadvertently. |
| |
| Fixed a problem with Index Fields where a BUFFER_OVERFLOW error |
| would incorrectly be returned if the width of the Data Register |
| was larger than the specified field access width. |
| |
| Completed fixes for LoadTable() and Unload() and verified their |
| operation. Implemented full support for the "DdbHandle" object |
| throughout the ACPI CA subsystem. |
| |
| Implemented full support for the MADT and ECDT tables in the ACPI |
| CA header files. Even though these tables are not directly |
| consumed by ACPI CA, the header definitions are useful for ACPI |
| device drivers. |
| |
| Integrated resource descriptor fixes posted to the Linux ACPI |
| list. This included checks for minimum descriptor length, and |
| support for trailing NULL strings within descriptors that have |
| optional string elements. |
| |
| Code and Data Size: Current and previous core subsystem library |
| sizes are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and |
| these values do not include any ACPI driver or OSPM code. The |
| debug version of the code includes the debug output trace |
| mechanism and has a much larger code and data size. Note that |
| these values will vary depending on the efficiency of the compiler |
| and the compiler options used during generation. |
| |
| Previous Release (20030918): |
| Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total |
| Debug Version: 157.3K Code, 64.5K Data, 221.8K Total |
| Current Release: |
| Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total |
| Debug Version: 157.9K Code, 64.8K Data, 222.7K Total |
| |
| |
| 2) iASL Compiler: |
| |
| Implemented detection of non-ASCII characters within the input |
| source ASL file. This catches attempts to compile binary (AML) |
| files early in the compile, with an informative error message. |
| |
| Fixed a problem where the disassembler would fault if the output |
| filename could not be generated or if the output file could not be |
| opened. |
| |
| ---------------------------------------- |
| 18 September 2003. Summary of changes for version 20030918: |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Found and fixed a longstanding problem with the late execution of |
| the various deferred AML opcodes (such as Operation Regions, |
| Buffer Fields, Buffers, and Packages). If the name string |
| specified for the name of the new object placed the object in a |
| scope other than the current scope, the initialization/execution |
| of the opcode failed. The solution to this problem was to |
| implement a mechanism where the late execution of such opcodes |
| does not attempt to lookup/create the name a second time in an |
| incorrect scope. This fixes the "region size computed |
| incorrectly" problem. |
| |
| Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a |
| Global Lock AE_BAD_PARAMETER error. |
| |
| Fixed several 64-bit issues with prototypes, casting and data |
| types. |
| |
| Removed duplicate prototype from acdisasm.h |
| |
| Fixed an issue involving EC Operation Region Detach (Shaohua Li) |
| |
| Code and Data Size: Current and previous core subsystem library |
| sizes are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and |
| these values do not include any ACPI driver or OSPM code. The |
| debug version of the code includes the debug output trace |
| mechanism and has a much larger code and data size. Note that |
| these values will vary depending on the efficiency of the compiler |
| and the compiler options used during generation. |
| |
| Previous Release: |
| |
| Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total |
| Debug Version: 156.9K Code, 64.2K Data, 221.1K Total |
| Current Release: |
| Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total |
| Debug Version: 157.3K Code, 64.5K Data, 221.8K Total |
| |
| |
| 2) Linux: |
| |
| Fixed the AcpiOsSleep implementation in osunixxf.c to pass the |
| correct sleep time in seconds. |
| |
| ---------------------------------------- |
| 14 July 2003. Summary of changes for version 20030619: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Parse SSDTs in order discovered, as opposed to reverse order |
| (Hrvoje Habjanic) |
| |
| Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas |
| Klausner, |
| Nate Lawson) |
| |
| |
| 2) Linux: |
| |
| Dynamically allocate SDT list (suggested by Andi Kleen) |
| |
| proc function return value cleanups (Andi Kleen) |
| |
| Correctly handle NMI watchdog during long stalls (Andrew Morton) |
| |
| Make it so acpismp=force works (reported by Andrew Morton) |
| |
| |
| ---------------------------------------- |
| 19 June 2003. Summary of changes for version 20030619: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fix To/FromBCD, eliminating the need for an arch-specific #define. |
| |
| Do not acquire a semaphore in the S5 shutdown path. |
| |
| Fix ex_digits_needed for 0. (Takayoshi Kochi) |
| |
| Fix sleep/stall code reversal. (Andi Kleen) |
| |
| Revert a change having to do with control method calling |
| semantics. |
| |
| 2) Linux: |
| |
| acpiphp update (Takayoshi Kochi) |
| |
| Export acpi_disabled for sonypi (Stelian Pop) |
| |
| Mention acpismp=force in config help |
| |
| Re-add acpitable.c and acpismp=force. This improves backwards |
| |
| compatibility and also cleans up the code to a significant degree. |
| |
| Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) |
| |
| ---------------------------------------- |
| 22 May 2003. Summary of changes for version 20030522: |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Found and fixed a reported problem where an AE_NOT_FOUND error |
| occurred occasionally during _BST evaluation. This turned out to |
| be an Owner ID allocation issue where a called method did not get |
| a new ID assigned to it. Eventually, (after 64k calls), the Owner |
| ID UINT16 would wraparound so that the ID would be the same as the |
| caller's and the called method would delete the caller's |
| namespace. |
| |
| Implemented extended error reporting for control methods that are |
| aborted due to a run-time exception. Output includes the exact |
| AML instruction that caused the method abort, a dump of the method |
| locals and arguments at the time of the abort, and a trace of all |
| nested control method calls. |
| |
| Modified the interpreter to allow the creation of buffers of zero |
| length from the AML code. Implemented new code to ensure that no |
| attempt is made to actually allocate a memory buffer (of length |
| zero) - instead, a simple buffer object with a NULL buffer pointer |
| and length zero is created. A warning is no longer issued when |
| the AML attempts to create a zero-length buffer. |
| |
| Implemented a workaround for the "leading asterisk issue" in |
| _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading |
| asterisk is automatically removed if present in any HID, UID, or |
| CID strings. The iASL compiler will still flag this asterisk as |
| an error, however. |
| |
| Implemented full support for _CID methods that return a package of |
| multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface |
| now additionally returns a device _CID list if present. This |
| required a change to the external interface in order to pass an |
| ACPI_BUFFER object as a parameter since the _CID list is of |
| variable length. |
| |
| Fixed a problem with the new AE_SAME_HANDLER exception where |
| handler initialization code did not know about this exception. |
| |
| Code and Data Size: Current and previous core subsystem library |
| sizes are shown below. These are the code and data sizes for the |
| acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and |
| these values do not include any ACPI driver or OSPM code. The |
| debug version of the code includes the debug output trace |
| mechanism and has a much larger code and data size. Note that |
| these values will vary depending on the efficiency of the compiler |
| and the compiler options used during generation. |
| |
| Previous Release (20030509): |
| Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total |
| Debug Version: 156.1K Code, 63.9K Data, 220.0K Total |
| Current Release: |
| Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total |
| Debug Version: 156.9K Code, 64.2K Data, 221.1K Total |
| |
| |
| 2) Linux: |
| |
| Fixed a bug in which we would reinitialize the ACPI interrupt |
| after it was already working, thus disabling all ACPI and the IRQs |
| for any other device sharing the interrupt. (Thanks to Stian |
| Jordet) |
| |
| Toshiba driver update (John Belmonte) |
| |
| Return only 0 or 1 for our interrupt handler status (Andrew |
| Morton) |
| |
| |
| 3) iASL Compiler: |
| |
| Fixed a reported problem where multiple (nested) ElseIf() |
| statements were not handled correctly by the compiler, resulting |
| in incorrect warnings and incorrect AML code. This was a problem |
| in both the ASL parser and the code generator. |
| |
| |
| 4) Documentation: |
| |
| Added changes to existing interfaces, new exception codes, and new |
| text concerning reference count object management versus garbage |
| collection. |
| |
| ---------------------------------------- |
| 09 May 2003. Summary of changes for version 20030509. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Changed the subsystem initialization sequence to hold off |
| installation of address space handlers until the hardware has been |
| initialized and the system has entered ACPI mode. This is because |
| the installation of space handlers can cause _REG methods to be |
| run. Previously, the _REG methods could potentially be run before |
| ACPI mode was enabled. |
| |
| Fixed some memory leak issues related to address space handler and |
| notify handler installation. There were some problems with the |
| reference count mechanism caused by the fact that the handler |
| objects are shared across several namespace objects. |
| |
| Fixed a reported problem where reference counts within the |
| namespace were not properly updated when named objects created by |
| method execution were deleted. |
| |
| Fixed a reported problem where multiple SSDTs caused a deletion |
| issue during subsystem termination. Restructured the table data |
| structures to simplify the linked lists and the related code. |
| |
| Fixed a problem where the table ID associated with secondary |
| tables (SSDTs) was not being propagated into the namespace objects |
| created by those tables. This would only present a problem for |
| tables that are unloaded at run-time, however. |
| |
| Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE |
| type as the length parameter (instead of UINT32). |
| |
| Solved a long-standing problem where an ALREADY_EXISTS error |
| appears on various systems. This problem could happen when there |
| are multiple PCI_Config operation regions under a single PCI root |
| bus. This doesn't happen very frequently, but there are some |
| systems that do this in the ASL. |
| |
| Fixed a reported problem where the internal DeleteNode function |
| was incorrectly handling the case where a namespace node was the |
| first in the parent's child list, and had additional peers (not |
| the only child, but first in the list of children.) |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total |
| Debug Version: 156.1K Code, 63.6K Data, 219.7K Total |
| Current Release: |
| Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total |
| Debug Version: 156.1K Code, 63.9K Data, 220.0K Total |
| |
| |
| 2) Linux: |
| |
| Allow ":" in OS override string (Ducrot Bruno) |
| |
| Kobject fix (Greg KH) |
| |
| |
| 3 iASL Compiler/Disassembler: |
| |
| Fixed a problem in the generation of the C source code files (AML |
| is emitted in C source statements for BIOS inclusion) where the |
| Ascii dump that appears within a C comment at the end of each line |
| could cause a compile time error if the AML sequence happens to |
| have an open comment or close comment sequence embedded. |
| |
| |
| ---------------------------------------- |
| 24 April 2003. Summary of changes for version 20030424. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Support for big-endian systems has been implemented. Most of the |
| support has been invisibly added behind big-endian versions of the |
| ACPI_MOVE_* macros. |
| |
| Fixed a problem in AcpiHwDisableGpeBlock() and |
| AcpiHwClearGpeBlock() where an incorrect offset was passed to the |
| low level hardware write routine. The offset parameter was |
| actually eliminated from the low level read/write routines because |
| they had become obsolete. |
| |
| Fixed a problem where a handler object was deleted twice during |
| the removal of a fixed event handler. |
| |
| |
| 2) Linux: |
| |
| A fix for SMP systems with link devices was contributed by |
| |
| Compaq's Dan Zink. |
| |
| (2.5) Return whether we handled the interrupt in our IRQ handler. |
| (Linux ISRs no longer return void, so we can propagate the handler |
| return value from the ACPI CA core back to the OS.) |
| |
| |
| |
| 3) Documentation: |
| |
| The ACPI CA Programmer Reference has been updated to reflect new |
| interfaces and changes to existing interfaces. |
| |
| ---------------------------------------- |
| 28 March 2003. Summary of changes for version 20030328. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The GPE Block Device support has been completed. New interfaces |
| are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event |
| interfaces (enable, disable, clear, getstatus) have been split |
| into separate interfaces for Fixed Events and General Purpose |
| Events (GPEs) in order to support GPE Block Devices properly. |
| |
| Fixed a problem where the error message "Failed to acquire |
| semaphore" would appear during operations on the embedded |
| controller (EC). |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total |
| Debug Version: 154.0K Code, 63.4K Data, 217.4K Total |
| Current Release: |
| Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total |
| Debug Version: 156.1K Code, 63.6K Data, 219.7K Total |
| |
| |
| ---------------------------------------- |
| 28 February 2003. Summary of changes for version 20030228. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The GPE handling and dispatch code has been completely overhauled |
| in preparation for support of GPE Block Devices (ID ACPI0006). |
| This affects internal data structures and code only; there should |
| be no differences visible externally. One new file has been |
| added, evgpeblk.c |
| |
| The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only |
| fields that are used to determine the GPE block lengths. The |
| REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address |
| structures are ignored. This is per the ACPI specification but it |
| isn't very clear. The full 256 Block 0/1 GPEs are now supported |
| (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). |
| |
| In the SCI interrupt handler, removed the read of the PM1_CONTROL |
| register to look at the SCI_EN bit. On some machines, this read |
| causes an SMI event and greatly slows down SCI events. (This may |
| in fact be the cause of slow battery status response on some |
| systems.) |
| |
| Fixed a problem where a store of a NULL string to a package object |
| could cause the premature deletion of the object. This was seen |
| during execution of the battery _BIF method on some systems, |
| resulting in no battery data being returned. |
| |
| Added AcpiWalkResources interface to simplify parsing of resource |
| lists. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total |
| Debug Version: 153.0K Code, 62.9K Data, 215.9K Total |
| Current Release: |
| Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total |
| Debug Version: 154.0K Code, 63.4K Data, 217.4K Total |
| |
| |
| 2) Linux |
| |
| S3 fixes (Ole Rohne) |
| |
| Update ACPI PHP driver with to use new acpi_walk_resource API |
| (Bjorn Helgaas) |
| |
| Add S4BIOS support (Pavel Machek) |
| |
| Map in entire table before performing checksum (John Stultz) |
| |
| Expand the mem= cmdline to allow the specification of reserved and |
| ACPI DATA blocks (Pavel Machek) |
| |
| Never use ACPI on VISWS |
| |
| Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) |
| |
| Revert a change that allowed P_BLK lengths to be 4 or 5. This is |
| causing us to think that some systems support C2 when they really |
| don't. |
| |
| Do not count processor objects for non-present CPUs (Thanks to |
| Dominik Brodowski) |
| |
| |
| 3) iASL Compiler: |
| |
| Fixed a problem where ASL include files could not be found and |
| opened. |
| |
| Added support for the _PDC reserved name. |
| |
| |
| ---------------------------------------- |
| 22 January 2003. Summary of changes for version 20030122. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Added a check for constructs of the form: Store (Local0, Local0) |
| where Local0 is not initialized. Apparently, some BIOS |
| programmers believe that this is a NOOP. Since this store doesn't |
| do anything anyway, the new prototype behavior will ignore this |
| error. This is a case where we can relax the strict checking in |
| the interpreter in the name of compatibility. |
| |
| |
| 2) Linux |
| |
| The AcpiSrc Source Conversion Utility has been released with the |
| Linux package for the first time. This is the utility that is |
| used to convert the ACPI CA base source code to the Linux version. |
| |
| (Both) Handle P_BLK lengths shorter than 6 more gracefully |
| |
| (Both) Move more headers to include/acpi, and delete an unused |
| header. |
| |
| (Both) Move drivers/acpi/include directory to include/acpi |
| |
| (Both) Boot functions don't use cmdline, so don't pass it around |
| |
| (Both) Remove include of unused header (Adrian Bunk) |
| |
| (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since |
| the |
| former now also includes the latter, acpiphp.h only needs the one, |
| now. |
| |
| (2.5) Make it possible to select method of bios restoring after S3 |
| resume. [=> no more ugly ifdefs] (Pavel Machek) |
| |
| (2.5) Make proc write interfaces work (Pavel Machek) |
| |
| (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) |
| |
| (2.5) Break out ACPI Perf code into its own module, under cpufreq |
| (Dominik Brodowski) |
| |
| (2.4) S4BIOS support (Ducrot Bruno) |
| |
| (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio |
| Visinoni) |
| |
| |
| 3) iASL Compiler: |
| |
| Added support to disassemble SSDT and PSDTs. |
| |
| Implemented support to obtain SSDTs from the Windows registry if |
| available. |
| |
| |
| ---------------------------------------- |
| 09 January 2003. Summary of changes for version 20030109. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Changed the behavior of the internal Buffer-to-String conversion |
| function. The current ACPI specification states that the contents |
| of the buffer are "converted to a string of two-character |
| hexadecimal numbers, each separated by a space". Unfortunately, |
| this definition is not backwards compatible with existing ACPI 1.0 |
| implementations (although the behavior was not defined in the ACPI |
| 1.0 specification). The new behavior simply copies data from the |
| buffer to the string until a null character is found or the end of |
| the buffer is reached. The new String object is always null |
| terminated. This problem was seen during the generation of _BIF |
| battery data where incorrect strings were returned for battery |
| type, etc. This will also require an errata to the ACPI |
| specification. |
| |
| Renamed all instances of NATIVE_UINT and NATIVE_INT to |
| ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. |
| |
| Copyright in all module headers (both Linux and non-Linux) has be |
| updated to 2003. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total |
| Debug Version: 153.0K Code, 62.9K Data, 215.9K Total |
| Current Release: |
| Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total |
| Debug Version: 153.0K Code, 62.9K Data, 215.9K Total |
| |
| |
| 2) Linux |
| |
| Fixed an oops on module insertion/removal (Matthew Tippett) |
| |
| (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) |
| |
| (2.5) Replace pr_debug (Randy Dunlap) |
| |
| (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) |
| |
| (Both) Eliminate spawning of thread from timer callback, in favor |
| of schedule_work() |
| |
| (Both) Show Lid status in /proc (Zdenek OGAR Skalak) |
| |
| (Both) Added define for Fixed Function HW region (Matthew Wilcox) |
| |
| (Both) Add missing statics to button.c (Pavel Machek) |
| |
| Several changes have been made to the source code translation |
| utility that generates the Linux Code in order to make the code |
| more "Linux-like": |
| |
| All typedefs on structs and unions have been removed in keeping |
| with the Linux coding style. |
| |
| Removed the non-Linux SourceSafe module revision number from each |
| module header. |
| |
| Completed major overhaul of symbols to be lowercase for linux. |
| Doubled the number of symbols that are lowercase. |
| |
| Fixed a problem where identifiers within procedure headers and |
| within quotes were not fully lower cased (they were left with a |
| starting capital.) |
| |
| Some C macros whose only purpose is to allow the generation of 16- |
| bit code are now completely removed in the Linux code, increasing |
| readability and maintainability. |
| |
| ---------------------------------------- |
| |
| 12 December 2002. Summary of changes for version 20021212. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where the creation of a zero-length AML Buffer |
| would cause a fault. |
| |
| Fixed a problem where a Buffer object that pointed to a static AML |
| buffer (in an ACPI table) could inadvertently be deleted, causing |
| memory corruption. |
| |
| Fixed a problem where a user buffer (passed in to the external |
| ACPI CA interfaces) could be overwritten if the buffer was too |
| small to complete the operation, causing memory corruption. |
| |
| Fixed a problem in the Buffer-to-String conversion code where a |
| string of length one was always returned, regardless of the size |
| of the input Buffer object. |
| |
| Removed the NATIVE_CHAR data type across the entire source due to |
| lack of need and lack of consistent use. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total |
| Debug Version: 152.7K Code, 62.7K Data, 215.4K Total |
| Current Release: |
| Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total |
| Debug Version: 153.0K Code, 62.9K Data, 215.9K Total |
| |
| |
| ---------------------------------------- |
| 05 December 2002. Summary of changes for version 20021205. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where a store to a String or Buffer object could |
| cause corruption of the DSDT if the object type being stored was |
| the same as the target object type and the length of the object |
| being stored was equal to or smaller than the original (existing) |
| target object. This was seen to cause corruption of battery _BIF |
| buffers if the _BIF method modified the buffer on the fly. |
| |
| Fixed a problem where an internal error was generated if a control |
| method invocation was used in an OperationRegion, Buffer, or |
| Package declaration. This was caused by the deferred parsing of |
| the control method and thus the deferred creation of the internal |
| method object. The solution to this problem was to create the |
| internal method object at the moment the method is encountered in |
| the first pass - so that subsequent references to the method will |
| able to obtain the required parameter count and thus properly |
| parse the method invocation. This problem presented itself as an |
| AE_AML_INTERNAL during the pass 1 parse phase during table load. |
| |
| Fixed a problem where the internal String object copy routine did |
| not always allocate sufficient memory for the target String object |
| and caused memory corruption. This problem was seen to cause |
| "Allocation already present in list!" errors as memory allocation |
| became corrupted. |
| |
| Implemented a new function for the evaluation of namespace objects |
| that allows the specification of the allowable return object |
| types. This simplifies a lot of code that checks for a return |
| object of one or more specific objects returned from the |
| evaluation (such as _STA, etc.) This may become and external |
| function if it would be useful to ACPI-related drivers. |
| |
| Completed another round of prefixing #defines with "ACPI_" for |
| clarity. |
| |
| Completed additional code restructuring to allow more modular |
| linking for iASL compiler and AcpiExec. Several files were split |
| creating new files. New files: nsparse.c dsinit.c evgpe.c |
| |
| Implemented an abort mechanism to terminate an executing control |
| method via the AML debugger. This feature is useful for debugging |
| control methods that depend (wait) for specific hardware |
| responses. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total |
| Debug Version: 152.9K Code, 63.3K Data, 216.2K Total |
| Current Release: |
| Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total |
| Debug Version: 152.7K Code, 62.7K Data, 215.4K Total |
| |
| |
| 2) iASL Compiler/Disassembler |
| |
| Fixed a compiler code generation problem for "Interrupt" Resource |
| Descriptors. If specified in the ASL, the optional "Resource |
| Source Index" and "Resource Source" fields were not inserted into |
| the correct location within the AML resource descriptor, creating |
| an invalid descriptor. |
| |
| Fixed a disassembler problem for "Interrupt" resource descriptors. |
| The optional "Resource Source Index" and "Resource Source" fields |
| were ignored. |
| |
| |
| ---------------------------------------- |
| 22 November 2002. Summary of changes for version 20021122. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a reported problem where an object stored to a Method Local |
| or Arg was not copied to a new object during the store - the |
| object pointer was simply copied to the Local/Arg. This caused |
| all subsequent operations on the Local/Arg to also affect the |
| original source of the store operation. |
| |
| Fixed a problem where a store operation to a Method Local or Arg |
| was not completed properly if the Local/Arg contained a reference |
| (from RefOf) to a named field. The general-purpose store-to- |
| namespace-node code is now used so that this case is handled |
| automatically. |
| |
| Fixed a problem where the internal object copy routine would cause |
| a protection fault if the object being copied was a Package and |
| contained either 1) a NULL package element or 2) a nested sub- |
| package. |
| |
| Fixed a problem with the GPE initialization that resulted from an |
| ambiguity in the ACPI specification. One section of the |
| specification states that both the address and length of the GPE |
| block must be zero if the block is not supported. Another section |
| implies that only the address need be zero if the block is not |
| supported. The code has been changed so that both the address and |
| the length must be non-zero to indicate a valid GPE block (i.e., |
| if either the address or the length is zero, the GPE block is |
| invalid.) |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total |
| Debug Version: 152.7K Code, 63.2K Data, 215.5K Total |
| Current Release: |
| Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total |
| Debug Version: 152.9K Code, 63.3K Data, 216.2K Total |
| |
| |
| 2) Linux |
| |
| Cleaned up EC driver. Exported an external EC read/write |
| interface. By going through this, other drivers (most notably |
| sonypi) will be able to serialize access to the EC. |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Implemented support to optionally generate include files for both |
| ASM and C (the -i switch). This simplifies BIOS development by |
| automatically creating include files that contain external |
| declarations for the symbols that are created within the |
| |
| (optionally generated) ASM and C AML source files. |
| |
| |
| ---------------------------------------- |
| 15 November 2002. Summary of changes for version 20021115. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a memory leak problem where an error during resolution of |
| |
| method arguments during a method invocation from another method |
| failed to cleanup properly by deleting all successfully resolved |
| argument objects. |
| |
| Fixed a problem where the target of the Index() operator was not |
| correctly constructed if the source object was a package. This |
| problem has not been detected because the use of a target operand |
| with Index() is very rare. |
| |
| Fixed a problem with the Index() operator where an attempt was |
| made to delete the operand objects twice. |
| |
| Fixed a problem where an attempt was made to delete an operand |
| twice during execution of the CondRefOf() operator if the target |
| did not exist. |
| |
| Implemented the first of perhaps several internal create object |
| functions that create and initialize a specific object type. This |
| consolidates duplicated code wherever the object is created, thus |
| shrinking the size of the subsystem. |
| |
| Implemented improved debug/error messages for errors that occur |
| during nested method invocations. All executing method pathnames |
| are displayed (with the error) as the call stack is unwound - thus |
| simplifying debug. |
| |
| Fixed a problem introduced in the 10/02 release that caused |
| premature deletion of a buffer object if a buffer was used as an |
| ASL operand where an integer operand is required (Thus causing an |
| implicit object conversion from Buffer to Integer.) The change in |
| the 10/02 release was attempting to fix a memory leak (albeit |
| incorrectly.) |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total |
| Debug Version: 153.1K Code, 63.3K Data, 216.4K Total |
| Current Release: |
| Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total |
| Debug Version: 152.7K Code, 63.2K Data, 215.5K Total |
| |
| |
| 2) Linux |
| |
| Changed the implementation of the ACPI semaphores to use down() |
| instead of down_interruptable(). It is important that the |
| execution of ACPI control methods not be interrupted by signals. |
| Methods must run to completion, or the system may be left in an |
| unknown/unstable state. |
| |
| Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. |
| (Shawn Starr) |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| |
| Changed the default location of output files. All output files |
| are now placed in the current directory by default instead of in |
| the directory of the source file. This change may affect some |
| existing makefiles, but it brings the behavior of the compiler in |
| line with other similar tools. The location of the output files |
| can be overridden with the -p command line switch. |
| |
| |
| ---------------------------------------- |
| 11 November 2002. Summary of changes for version 20021111. |
| |
| |
| 0) ACPI Specification 2.0B is released and is now available at: |
| http://www.acpi.info/index.html |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support for the ACPI 2.0 SMBus Operation Regions. |
| This includes the early detection and handoff of the request to |
| the SMBus region handler (avoiding all of the complex field |
| support code), and support for the bidirectional return packet |
| from an SMBus write operation. This paves the way for the |
| development of SMBus drivers in each host operating system. |
| |
| Fixed a problem where the semaphore WAIT_FOREVER constant was |
| defined as 32 bits, but must be 16 bits according to the ACPI |
| specification. This had the side effect of causing ASL |
| Mutex/Event timeouts even though the ASL code requested a wait |
| forever. Changed all internal references to the ACPI timeout |
| parameter to 16 bits to prevent future problems. Changed the name |
| of WAIT_FOREVER to ACPI_WAIT_FOREVER. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total |
| Debug Version: 152.3K Code, 63.0K Data, 215.3K Total |
| Current Release: |
| Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total |
| Debug Version: 153.1K Code, 63.3K Data, 216.4K Total |
| |
| |
| 2) Linux |
| |
| Module loading/unloading fixes (John Cagle) |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Added support for the SMBBlockProcessCall keyword (ACPI 2.0) |
| |
| Implemented support for the disassembly of all SMBus protocol |
| keywords (SMBQuick, SMBWord, etc.) |
| |
| ---------------------------------------- |
| 01 November 2002. Summary of changes for version 20021101. |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Fixed a problem where platforms that have a GPE1 block but no GPE0 |
| block were not handled correctly. This resulted in a "GPE |
| overlap" error message. GPE0 is no longer required. |
| |
| Removed code added in the previous release that inserted nodes |
| into the namespace in alphabetical order. This caused some side- |
| effects on various machines. The root cause of the problem is |
| still under investigation since in theory, the internal ordering |
| of the namespace nodes should not matter. |
| |
| |
| Enhanced error reporting for the case where a named object is not |
| found during control method execution. The full ACPI namepath |
| (name reference) of the object that was not found is displayed in |
| this case. |
| |
| Note: as a result of the overhaul of the namespace object types in |
| the previous release, the namespace nodes for the predefined |
| scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE |
| instead of ACPI_TYPE_ANY. This simplifies the namespace |
| management code but may affect code that walks the namespace tree |
| looking for specific object types. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a much larger code and data size. Note that these values will |
| vary depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total |
| Debug Version: 151.7K Code, 62.4K Data, 214.1K Total |
| Current Release: |
| Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total |
| Debug Version: 152.3K Code, 63.0K Data, 215.3K Total |
| |
| |
| 2) Linux |
| |
| Fixed a problem introduced in the previous release where the |
| Processor and Thermal objects were not recognized and installed in |
| /proc. This was related to the scope type change described above. |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Implemented the -g option to get all of the required ACPI tables |
| from the registry and save them to files (Windows version of the |
| compiler only.) The required tables are the FADT, FACS, and DSDT. |
| |
| Added ACPI table checksum validation during table disassembly in |
| order to catch corrupted tables. |
| |
| |
| ---------------------------------------- |
| 22 October 2002. Summary of changes for version 20021022. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented a restriction on the Scope operator that the target |
| must already exist in the namespace at the time the operator is |
| encountered (during table load or method execution). In other |
| words, forward references are not allowed and Scope() cannot |
| create a new object. This changes the previous behavior where the |
| interpreter would create the name if not found. This new behavior |
| correctly enables the search-to-root algorithm during namespace |
| lookup of the target name. Because of this upsearch, this fixes |
| the known Compaq _SB_.OKEC problem and makes both the AML |
| interpreter and iASL compiler compatible with other ACPI |
| implementations. |
| |
| Completed a major overhaul of the internal ACPI object types for |
| the ACPI Namespace and the associated operand objects. Many of |
| these types had become obsolete with the introduction of the two- |
| pass namespace load. This cleanup simplifies the code and makes |
| the entire namespace load mechanism much clearer and easier to |
| understand. |
| |
| Improved debug output for tracking scope opening/closing to help |
| diagnose scoping issues. The old scope name as well as the new |
| scope name are displayed. Also improved error messages for |
| problems with ASL Mutex objects and error messages for GPE |
| problems. |
| |
| Cleaned up the namespace dump code, removed obsolete code. |
| |
| All string output (for all namespace/object dumps) now uses the |
| common ACPI string output procedure which handles escapes properly |
| and does not emit non-printable characters. |
| |
| Fixed some issues with constants in the 64-bit version of the |
| local C library (utclib.c) |
| |
| |
| 2) Linux |
| |
| EC Driver: No longer attempts to acquire the Global Lock at |
| interrupt level. |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Implemented ACPI 2.0B grammar change that disallows all Type 1 and |
| 2 opcodes outside of a control method. This means that the |
| "executable" operators (versus the "namespace" operators) cannot |
| be used at the table level; they can only be used within a control |
| method. |
| |
| Implemented the restriction on the Scope() operator where the |
| target must already exist in the namespace at the time the |
| operator is encountered (during ASL compilation). In other words, |
| forward references are not allowed and Scope() cannot create a new |
| object. This makes the iASL compiler compatible with other ACPI |
| implementations and makes the Scope() implementation adhere to the |
| ACPI specification. |
| |
| Fixed a problem where namepath optimization for the Alias operator |
| was optimizing the wrong path (of the two namepaths.) This caused |
| a "Missing alias link" error message. |
| |
| Fixed a problem where an "unknown reserved name" warning could be |
| incorrectly generated for names like "_SB" when the trailing |
| underscore is not used in the original ASL. |
| |
| Fixed a problem where the reserved name check did not handle |
| NamePaths with multiple NameSegs correctly. The first nameseg of |
| the NamePath was examined instead of the last NameSeg. |
| |
| |
| ---------------------------------------- |
| |
| 02 October 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem version 20021002: |
| |
| Fixed a problem where a store/copy of a string to an existing |
| string did not always set the string length properly in the String |
| object. |
| |
| Fixed a reported problem with the ToString operator where the |
| behavior was identical to the ToHexString operator instead of just |
| simply converting a raw buffer to a string data type. |
| |
| Fixed a problem where CopyObject and the other "explicit" |
| conversion operators were not updating the internal namespace node |
| type as part of the store operation. |
| |
| Fixed a memory leak during implicit source operand conversion |
| where the original object was not deleted if it was converted to a |
| new object of a different type. |
| |
| Enhanced error messages for all problems associated with namespace |
| lookups. Common procedure generates and prints the lookup name as |
| well as the formatted status. |
| |
| Completed implementation of a new design for the Alias support |
| within the namespace. The existing design did not handle the case |
| where a new object was assigned to one of the two names due to the |
| use of an explicit conversion operator, resulting in the two names |
| pointing to two different objects. The new design simply points |
| the Alias name to the original name node - not to the object. |
| This results in a level of indirection that must be handled in the |
| name resolution mechanism. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total |
| Debug Version: 150.0K Code, 61.7K Data, 211.7K Total |
| Current Release: |
| Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total |
| Debug Version: 151.7K Code, 62.4K Data, 214.1K Total |
| |
| |
| 2) Linux |
| |
| Initialize thermal driver's timer before it is used. (Knut |
| Neumann) |
| |
| Allow handling negative celsius values. (Kochi Takayoshi) |
| |
| Fix thermal management and make trip points. R/W (Pavel Machek) |
| |
| Fix /proc/acpi/sleep. (P. Christeas) |
| |
| IA64 fixes. (David Mosberger) |
| |
| Fix reversed logic in blacklist code. (Sergio Monteiro Basto) |
| |
| Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik |
| Brodowski) |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Clarified some warning/error messages. |
| |
| |
| ---------------------------------------- |
| 18 September 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem version 20020918: |
| |
| Fixed a reported problem with reference chaining (via the Index() |
| and RefOf() operators) in the ObjectType() and SizeOf() operators. |
| The definition of these operators includes the dereferencing of |
| all chained references to return information on the base object. |
| |
| Fixed a problem with stores to indexed package elements - the |
| existing code would not complete the store if an "implicit |
| conversion" was not performed. In other words, if the existing |
| object (package element) was to be replaced completely, the code |
| didn't handle this case. |
| |
| Relaxed typechecking on the ASL "Scope" operator to allow the |
| target name to refer to an object of type Integer, String, or |
| Buffer, in addition to the scoping object types (Device, |
| predefined Scopes, Processor, PowerResource, and ThermalZone.) |
| This allows existing AML code that has workarounds for a bug in |
| Windows to function properly. A warning is issued, however. This |
| affects both the AML interpreter and the iASL compiler. Below is |
| an example of this type of ASL code: |
| |
| Name(DEB,0x00) |
| Scope(DEB) |
| { |
| |
| Fixed some reported problems with 64-bit integer support in the |
| local implementation of C library functions (clib.c) |
| |
| |
| 2) Linux |
| |
| Use ACPI fix map region instead of IOAPIC region, since it is |
| undefined in non-SMP. |
| |
| Ensure that the SCI has the proper polarity and trigger, even on |
| systems that do not have an interrupt override entry in the MADT. |
| |
| 2.5 big driver reorganization (Pat Mochel) |
| |
| Use early table mapping code from acpitable.c (Andi Kleen) |
| |
| New blacklist entries (Andi Kleen) |
| |
| Blacklist improvements. Split blacklist code out into a separate |
| file. Move checking the blacklist to very early. Previously, we |
| would use ACPI tables, and then halfway through init, check the |
| blacklist -- too late. Now, it's early enough to completely fall- |
| back to non-ACPI. |
| |
| |
| 3) iASL Compiler/Disassembler version 20020918: |
| |
| Fixed a problem where the typechecking code didn't know that an |
| alias could point to a method. In other words, aliases were not |
| being dereferenced during typechecking. |
| |
| |
| ---------------------------------------- |
| 29 August 2002. Summary of changes for this release. |
| |
| 1) ACPI CA Core Subsystem Version 20020829: |
| |
| If the target of a Scope() operator already exists, it must be an |
| object type that actually opens a scope -- such as a Device, |
| Method, Scope, etc. This is a fatal runtime error. Similar error |
| check has been added to the iASL compiler also. |
| |
| Tightened up the namespace load to disallow multiple names in the |
| same scope. This previously was allowed if both objects were of |
| the same type. (i.e., a lookup was the same as entering a new |
| name). |
| |
| |
| 2) Linux |
| |
| Ensure that the ACPI interrupt has the proper trigger and |
| polarity. |
| |
| local_irq_disable is extraneous. (Matthew Wilcox) |
| |
| Make "acpi=off" actually do what it says, and not use the ACPI |
| interpreter *or* the tables. |
| |
| Added arch-neutral support for parsing SLIT and SRAT tables (Kochi |
| Takayoshi) |
| |
| |
| 3) iASL Compiler/Disassembler Version 20020829: |
| |
| Implemented namepath optimization for name declarations. For |
| example, a declaration like "Method (\_SB_.ABCD)" would get |
| optimized to "Method (ABCD)" if the declaration is within the |
| \_SB_ scope. This optimization is in addition to the named |
| reference path optimization first released in the previous |
| version. This would seem to complete all possible optimizations |
| for namepaths within the ASL/AML. |
| |
| If the target of a Scope() operator already exists, it must be an |
| object type that actually opens a scope -- such as a Device, |
| Method, Scope, etc. |
| |
| Implemented a check and warning for unreachable code in the same |
| block below a Return() statement. |
| |
| Fixed a problem where the listing file was not generated if the |
| compiler aborted if the maximum error count was exceeded (200). |
| |
| Fixed a problem where the typechecking of method return values was |
| broken. This includes the check for a return value when the |
| method is invoked as a TermArg (a return value is expected.) |
| |
| Fixed a reported problem where EOF conditions during a quoted |
| string or comment caused a fault. |
| |
| |
| ---------------------------------------- |
| 15 August 2002. Summary of changes for this release. |
| |
| 1) ACPI CA Core Subsystem Version 20020815: |
| |
| Fixed a reported problem where a Store to a method argument that |
| contains a reference did not perform the indirect store correctly. |
| This problem was created during the conversion to the new |
| reference object model - the indirect store to a method argument |
| code was not updated to reflect the new model. |
| |
| Reworked the ACPI mode change code to better conform to ACPI 2.0, |
| handle corner cases, and improve code legibility (Kochi Takayoshi) |
| |
| Fixed a problem with the pathname parsing for the carat (^) |
| prefix. The heavy use of the carat operator by the new namepath |
| optimization in the iASL compiler uncovered a problem with the AML |
| interpreter handling of this prefix. In the case where one or |
| more carats precede a single nameseg, the nameseg was treated as |
| standalone and the search rule (to root) was inadvertently |
| applied. This could cause both the iASL compiler and the |
| interpreter to find the wrong object or to miss the error that |
| should occur if the object does not exist at that exact pathname. |
| |
| Found and fixed the problem where the HP Pavilion DSDT would not |
| load. This was a relatively minor tweak to the table loading code |
| (a problem caused by the unexpected encounter with a method |
| invocation not within a control method), but it does not solve the |
| overall issue of the execution of AML code at the table level. |
| This investigation is still ongoing. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total |
| Debug Version: 149.4K Code, 61.6K Data, 211.0K Total |
| Current Release: |
| Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total |
| Debug Version: 150.0K Code, 61.7K Data, 211.7K Total |
| |
| |
| 2) Linux |
| |
| Remove redundant slab.h include (Brad Hards) |
| |
| Fix several bugs in thermal.c (Herbert Nachtnebel) |
| |
| Make CONFIG_ACPI_BOOT work properly (Pavel Machek) |
| |
| Change acpi_system_suspend to use updated irq functions (Pavel |
| Machek) |
| |
| Export acpi_get_firmware_table (Matthew Wilcox) |
| |
| Use proper root proc entry for ACPI (Kochi Takayoshi) |
| |
| Fix early-boot table parsing (Bjorn Helgaas) |
| |
| |
| 3) iASL Compiler/Disassembler |
| |
| Reworked the compiler options to make them more consistent and to |
| use two-letter options where appropriate. We were running out of |
| sensible letters. This may break some makefiles, so check the |
| current options list by invoking the compiler with no parameters. |
| |
| Completed the design and implementation of the ASL namepath |
| optimization option for the compiler. This option optimizes all |
| references to named objects to the shortest possible path. The |
| first attempt tries to utilize a single nameseg (4 characters) and |
| the "search-to-root" algorithm used by the interpreter. If that |
| cannot be used (because either the name is not in the search path |
| or there is a conflict with another object with the same name), |
| the pathname is optimized using the carat prefix (usually a |
| shorter string than specifying the entire path from the root.) |
| |
| Implemented support to obtain the DSDT from the Windows registry |
| (when the disassembly option is specified with no input file). |
| Added this code as the implementation for AcpiOsTableOverride in |
| the Windows OSL. Migrated the 16-bit code (used in the AcpiDump |
| utility) to scan memory for the DSDT to the AcpiOsTableOverride |
| function in the DOS OSL to make the disassembler truly OS |
| independent. |
| |
| Implemented a new option to disassemble and compile in one step. |
| When used without an input filename, this option will grab the |
| DSDT from the local machine, disassemble it, and compile it in one |
| step. |
| |
| Added a warning message for invalid escapes (a backslash followed |
| by any character other than the allowable escapes). This catches |
| the quoted string error "\_SB_" (which should be "\\_SB_" ). |
| |
| Also, there are numerous instances in the ACPI specification where |
| this error occurs. |
| |
| Added a compiler option to disable all optimizations. This is |
| basically the "compatibility mode" because by using this option, |
| the AML code will come out exactly the same as other ASL |
| compilers. |
| |
| Added error messages for incorrectly ordered dependent resource |
| functions. This includes: missing EndDependentFn macro at end of |
| dependent resource list, nested dependent function macros (both |
| start and end), and missing StartDependentFn macro. These are |
| common errors that should be caught at compile time. |
| |
| Implemented _OSI support for the disassembler and compiler. _OSI |
| must be included in the namespace for proper disassembly (because |
| the disassembler must know the number of arguments.) |
| |
| Added an "optimization" message type that is optional (off by |
| default). This message is used for all optimizations - including |
| constant folding, integer optimization, and namepath optimization. |
| |
| ---------------------------------------- |
| 25 July 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020725: |
| |
| The AML Disassembler has been enhanced to produce compilable ASL |
| code and has been integrated into the iASL compiler (see below) as |
| well as the single-step disassembly for the AML debugger and the |
| disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, |
| resource templates and macros are fully supported. The |
| disassembler has been tested on over 30 different AML files, |
| producing identical AML when the resulting disassembled ASL file |
| is recompiled with the same ASL compiler. |
| |
| Modified the Resource Manager to allow zero interrupts and zero |
| dma channels during the GetCurrentResources call. This was |
| causing problems on some platforms. |
| |
| Added the AcpiOsRedirectOutput interface to the OSL to simplify |
| output redirection for the AcpiOsPrintf and AcpiOsVprintf |
| interfaces. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total |
| Debug Version: 142.9K Code, 58.7K Data, 201.6K Total |
| Current Release: |
| Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total |
| Debug Version: 149.4K Code, 61.6K Data, 211.0K Total |
| |
| |
| 2) Linux |
| |
| Fixed a panic in the EC driver (Dominik Brodowski) |
| |
| Implemented checksum of the R/XSDT itself during Linux table scan |
| (Richard Schaal) |
| |
| |
| 3) iASL compiler |
| |
| The AML disassembler is integrated into the compiler. The "-d" |
| option invokes the disassembler to completely disassemble an |
| input AML file, producing as output a text ASL file with the |
| extension ".dsl" (to avoid name collisions with existing .asl |
| source files.) A future enhancement will allow the disassembler |
| to obtain the BIOS DSDT from the registry under Windows. |
| |
| Fixed a problem with the VendorShort and VendorLong resource |
| descriptors where an invalid AML sequence was created. |
| |
| Implemented a fix for BufferData term in the ASL parser. It was |
| inadvertently defined twice, allowing invalid syntax to pass and |
| causing reduction conflicts. |
| |
| Fixed a problem where the Ones opcode could get converted to a |
| value of zero if "Ones" was used where a byte, word or dword value |
| was expected. The 64-bit value is now truncated to the correct |
| size with the correct value. |
| |
| |
| |
| ---------------------------------------- |
| 02 July 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020702: |
| |
| The Table Manager code has been restructured to add several new |
| features. Tables that are not required by the core subsystem |
| (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer |
| validated in any way and are returned from AcpiGetFirmwareTable if |
| requested. The AcpiOsTableOverride interface is now called for |
| each table that is loaded by the subsystem in order to allow the |
| host to override any table it chooses. Previously, only the DSDT |
| could be overridden. Added one new files, tbrsdt.c and |
| tbgetall.c. |
| |
| Fixed a problem with the conversion of internal package objects to |
| external objects (when a package is returned from a control |
| method.) The return buffer length was set to zero instead of the |
| proper length of the package object. |
| |
| Fixed a reported problem with the use of the RefOf and DeRefOf |
| operators when passing reference arguments to control methods. A |
| new type of Reference object is used internally for references |
| produced by the RefOf operator. |
| |
| Added additional error messages in the Resource Manager to explain |
| AE_BAD_DATA errors when they occur during resource parsing. |
| |
| Split the AcpiEnableSubsystem into two primitives to enable a |
| finer granularity initialization sequence. These two calls should |
| be called in this order: AcpiEnableSubsystem (flags), |
| AcpiInitializeObjects (flags). The flags parameter remains the |
| same. |
| |
| |
| 2) Linux |
| |
| Updated the ACPI utilities module to understand the new style of |
| fully resolved package objects that are now returned from the core |
| subsystem. This eliminates errors of the form: |
| |
| ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] |
| acpi_utils-0430 [145] acpi_evaluate_reference: |
| Invalid element in package (not a device reference) |
| |
| The method evaluation utility uses the new buffer allocation |
| scheme instead of calling AcpiEvaluate Object twice. |
| |
| Added support for ECDT. This allows the use of the Embedded |
| |
| Controller before the namespace has been fully initialized, which |
| is necessary for ACPI 2.0 support, and for some laptops to |
| initialize properly. (Laptops using ECDT are still rare, so only |
| limited testing was performed of the added functionality.) |
| |
| Fixed memory leaks in the EC driver. |
| |
| Eliminated a brittle code structure in acpi_bus_init(). |
| |
| Eliminated the acpi_evaluate() helper function in utils.c. It is |
| no longer needed since acpi_evaluate_object can optionally |
| allocate memory for the return object. |
| |
| Implemented fix for keyboard hang when getting battery readings on |
| some systems (Stephen White) |
| |
| PCI IRQ routing update (Dominik Brodowski) |
| |
| Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC |
| support |
| |
| ---------------------------------------- |
| 11 June 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020611: |
| |
| Fixed a reported problem where constants such as Zero and One |
| appearing within _PRT packages were not handled correctly within |
| the resource manager code. Originally reported against the ASL |
| compiler because the code generator now optimizes integers to |
| their minimal AML representation (i.e. AML constants if possible.) |
| The _PRT code now handles all AML constant opcodes correctly |
| (Zero, One, Ones, Revision). |
| |
| Fixed a problem with the Concatenate operator in the AML |
| interpreter where a buffer result object was incorrectly marked as |
| not fully evaluated, causing a run-time error of AE_AML_INTERNAL. |
| |
| All package sub-objects are now fully resolved before they are |
| returned from the external ACPI interfaces. This means that name |
| strings are resolved to object handles, and constant operators |
| (Zero, One, Ones, Revision) are resolved to Integers. |
| |
| Implemented immediate resolution of the AML Constant opcodes |
| (Zero, One, Ones, Revision) to Integer objects upon detection |
| within the AML stream. This has simplified and reduced the |
| generated code size of the subsystem by eliminating about 10 |
| switch statements for these constants (which previously were |
| contained in Reference objects.) The complicating issues are that |
| the Zero opcode is used as a "placeholder" for unspecified |
| optional target operands and stores to constants are defined to be |
| no-ops. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total |
| Debug Version: 143.8K Code, 58.8K Data, 202.6K Total |
| Current Release: |
| Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total |
| Debug Version: 142.9K Code, 58.7K Data, 201.6K Total |
| |
| |
| 2) Linux |
| |
| |
| Added preliminary support for obtaining _TRA data for PCI root |
| bridges (Bjorn Helgaas). |
| |
| |
| 3) iASL Compiler Version X2046: |
| |
| Fixed a problem where the "_DDN" reserved name was defined to be a |
| control method with one argument. There are no arguments, and |
| _DDN does not have to be a control method. |
| |
| Fixed a problem with the Linux version of the compiler where the |
| source lines printed with error messages were the wrong lines. |
| This turned out to be the "LF versus CR/LF" difference between |
| Windows and Unix. This appears to be the longstanding issue |
| concerning listing output and error messages. |
| |
| Fixed a problem with the Linux version of compiler where opcode |
| names within error messages were wrong. This was caused by a |
| slight difference in the output of the Flex tool on Linux versus |
| Windows. |
| |
| Fixed a problem with the Linux compiler where the hex output files |
| contained some garbage data caused by an internal buffer overrun. |
| |
| |
| ---------------------------------------- |
| 17 May 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020517: |
| |
| Implemented a workaround to an BIOS bug discovered on the HP |
| OmniBook where the FADT revision number and the table size are |
| inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new |
| behavior is to fallback to using only the ACPI 1.0 fields of the |
| FADT if the table is too small to be a ACPI 2.0 table as claimed |
| by the revision number. Although this is a BIOS bug, this is a |
| case where the workaround is simple enough and with no side |
| effects, so it seemed prudent to add it. A warning message is |
| issued, however. |
| |
| Implemented minimum size checks for the fixed-length ACPI tables - |
| - the FADT and FACS, as well as consistency checks between the |
| revision number and the table size. |
| |
| Fixed a reported problem in the table override support where the |
| new table pointer was incorrectly treated as a physical address |
| instead of a logical address. |
| |
| Eliminated the use of the AE_AML_ERROR exception and replaced it |
| with more descriptive codes. |
| |
| Fixed a problem where an exception would occur if an ASL Field was |
| defined with no named Field Units underneath it (used by some |
| index fields). |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total |
| Debug Version: 142.9K Code, 58.4K Data, 201.3K Total |
| Current Release: |
| Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total |
| Debug Version: 143.8K Code, 58.8K Data, 202.6K Total |
| |
| |
| |
| 2) Linux |
| |
| Much work done on ACPI init (MADT and PCI IRQ routing support). |
| (Paul D. and Dominik Brodowski) |
| |
| Fix PCI IRQ-related panic on boot (Sam Revitch) |
| |
| Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) |
| |
| Fix "MHz" typo (Dominik Brodowski) |
| |
| Fix RTC year 2000 issue (Dominik Brodowski) |
| |
| Preclude multiple button proc entries (Eric Brunet) |
| |
| Moved arch-specific code out of include/platform/aclinux.h |
| |
| 3) iASL Compiler Version X2044: |
| |
| Implemented error checking for the string used in the EISAID macro |
| (Usually used in the definition of the _HID object.) The code now |
| strictly enforces the PnP format - exactly 7 characters, 3 |
| uppercase letters and 4 hex digits. |
| |
| If a raw string is used in the definition of the _HID object |
| (instead of the EISAID macro), the string must contain all |
| alphanumeric characters (e.g., "*PNP0011" is not allowed because |
| of the asterisk.) |
| |
| Implemented checking for invalid use of ACPI reserved names for |
| most of the name creation operators (Name, Device, Event, Mutex, |
| OperationRegion, PowerResource, Processor, and ThermalZone.) |
| Previously, this check was only performed for control methods. |
| |
| Implemented an additional check on the Name operator to emit an |
| error if a reserved name that must be implemented in ASL as a |
| control method is used. We know that a reserved name must be a |
| method if it is defined with input arguments. |
| |
| The warning emitted when a namespace object reference is not found |
| during the cross reference phase has been changed into an error. |
| The "External" directive should be used for names defined in other |
| modules. |
| |
| |
| 4) Tools and Utilities |
| |
| The 16-bit tools (adump16 and aexec16) have been regenerated and |
| tested. |
| |
| Fixed a problem with the output of both acpidump and adump16 where |
| the indentation of closing parentheses and brackets was not |
| |
| aligned properly with the parent block. |
| |
| |
| ---------------------------------------- |
| 03 May 2002. Summary of changes for this release. |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020503: |
| |
| Added support a new OSL interface that allows the host operating |
| |
| system software to override the DSDT found in the firmware - |
| AcpiOsTableOverride. With this interface, the OSL can examine the |
| version of the firmware DSDT and replace it with a different one |
| if desired. |
| |
| Added new external interfaces for accessing ACPI registers from |
| device drivers and other system software - AcpiGetRegister and |
| AcpiSetRegister. This was simply an externalization of the |
| existing AcpiHwBitRegister interfaces. |
| |
| Fixed a regression introduced in the previous build where the |
| ASL/AML CreateField operator always returned an error, |
| "destination must be a NS Node". |
| |
| Extended the maximum time (before failure) to successfully enable |
| ACPI mode to 3 seconds. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total |
| Debug Version: 142.4K Code, 58.3K Data, 200.7K Total |
| Current Release: |
| Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total |
| Debug Version: 142.9K Code, 58.4K Data, 201.3K Total |
| |
| |
| 2) Linux |
| |
| Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- |
| free. While 3 out of 4 of our in-house systems work fine, the last |
| one still hangs when testing the LAPIC timer. |
| |
| Renamed many files in 2.5 kernel release to omit "acpi_" from the |
| name. |
| |
| Added warning on boot for Presario 711FR. |
| |
| Sleep improvements (Pavel Machek) |
| |
| ACPI can now be built without CONFIG_PCI enabled. |
| |
| IA64: Fixed memory map functions (JI Lee) |
| |
| |
| 3) iASL Compiler Version X2043: |
| |
| Added support to allow the compiler to be integrated into the MS |
| VC++ development environment for one-button compilation of single |
| files or entire projects -- with error-to-source-line mapping. |
| |
| Implemented support for compile-time constant folding for the |
| Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 |
| specification. This allows the ASL writer to use expressions |
| instead of Integer/Buffer/String constants in terms that must |
| evaluate to constants at compile time and will also simplify the |
| emitted AML in any such sub-expressions that can be folded |
| (evaluated at compile-time.) This increases the size of the |
| compiler significantly because a portion of the ACPI CA AML |
| interpreter is included within the compiler in order to pre- |
| evaluate constant expressions. |
| |
| |
| Fixed a problem with the "Unicode" ASL macro that caused the |
| compiler to fault. (This macro is used in conjunction with the |
| _STR reserved name.) |
| |
| Implemented an AML opcode optimization to use the Zero, One, and |
| Ones opcodes where possible to further reduce the size of integer |
| constants and thus reduce the overall size of the generated AML |
| code. |
| |
| Implemented error checking for new reserved terms for ACPI version |
| 2.0A. |
| |
| Implemented the -qr option to display the current list of ACPI |
| reserved names known to the compiler. |
| |
| Implemented the -qc option to display the current list of ASL |
| operators that are allowed within constant expressions and can |
| therefore be folded at compile time if the operands are constants. |
| |
| |
| 4) Documentation |
| |
| Updated the Programmer's Reference for new interfaces, data types, |
| and memory allocation model options. |
| |
| Updated the iASL Compiler User Reference to apply new format and |
| add information about new features and options. |
| |
| ---------------------------------------- |
| 19 April 2002. Summary of changes for this release. |
| |
| 1) ACPI CA Core Subsystem Version 20020419: |
| |
| The source code base for the Core Subsystem has been completely |
| cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit |
| versions. The Lint option files used are included in the |
| /acpi/generate/lint directory. |
| |
| Implemented enhanced status/error checking across the entire |
| Hardware manager subsystem. Any hardware errors (reported from |
| the OSL) are now bubbled up and will abort a running control |
| method. |
| |
| |
| Fixed a problem where the per-ACPI-table integer width (32 or 64) |
| was stored only with control method nodes, causing a fault when |
| non-control method code was executed during table loading. The |
| solution implemented uses a global variable to indicate table |
| width across the entire ACPI subsystem. Therefore, ACPI CA does |
| not support mixed integer widths across different ACPI tables |
| (DSDT, SSDT). |
| |
| Fixed a problem where NULL extended fields (X fields) in an ACPI |
| 2.0 ACPI FADT caused the table load to fail. Although the |
| existing ACPI specification is a bit fuzzy on this topic, the new |
| behavior is to fall back on a ACPI 1.0 field if the corresponding |
| ACPI 2.0 X field is zero (even though the table revision indicates |
| a full ACPI 2.0 table.) The ACPI specification will be updated to |
| clarify this issue. |
| |
| Fixed a problem with the SystemMemory operation region handler |
| where memory was always accessed byte-wise even if the AML- |
| specified access width was larger than a byte. This caused |
| problems on systems with memory-mapped I/O. Memory is now |
| accessed with the width specified. On systems that do not support |
| non-aligned transfers, a check is made to guarantee proper address |
| alignment before proceeding in order to avoid an AML-caused |
| alignment fault within the kernel. |
| |
| |
| Fixed a problem with the ExtendedIrq resource where only one byte |
| of the 4-byte Irq field was extracted. |
| |
| Fixed the AcpiExDigitsNeeded() procedure to support _UID. This |
| function was out of date and required a rewrite. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total |
| Debug Version: 139.8K Code, 57.4K Data, 197.2K Total |
| Current Release: |
| Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total |
| Debug Version: 142.4K Code, 58.3K Data, 200.7K Total |
| |
| |
| 2) Linux |
| |
| PCI IRQ routing fixes (Dominik Brodowski) |
| |
| |
| 3) iASL Compiler Version X2042: |
| |
| Implemented an additional compile-time error check for a field |
| unit whose size + minimum access width would cause a run-time |
| access beyond the end-of-region. Previously, only the field size |
| itself was checked. |
| |
| The Core subsystem and iASL compiler now share a common parse |
| object in preparation for compile-time evaluation of the type |
| 3/4/5 ASL operators. |
| |
| |
| ---------------------------------------- |
| Summary of changes for this release: 03_29_02 |
| |
| 1) ACPI CA Core Subsystem Version 20020329: |
| |
| Implemented support for late evaluation of TermArg operands to |
| Buffer and Package objects. This allows complex expressions to be |
| used in the declarations of these object types. |
| |
| Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI |
| 1.0, if the field was larger than 32 bits, it was returned as a |
| buffer - otherwise it was returned as an integer. In ACPI 2.0, |
| the field is returned as a buffer only if the field is larger than |
| 64 bits. The TableRevision is now considered when making this |
| conversion to avoid incompatibility with existing ASL code. |
| |
| Implemented logical addressing for AcpiOsGetRootPointer. This |
| allows an RSDP with either a logical or physical address. With |
| this support, the host OS can now override all ACPI tables with |
| one logical RSDP. Includes implementation of "typed" pointer |
| support to allow a common data type for both physical and logical |
| pointers internally. This required a change to the |
| AcpiOsGetRootPointer interface. |
| |
| Implemented the use of ACPI 2.0 Generic Address Structures for all |
| GPE, Fixed Event, and PM Timer I/O. This allows the use of memory |
| mapped I/O for these ACPI features. |
| |
| Initialization now ignores not only non-required tables (All |
| tables other than the FADT, FACS, DSDT, and SSDTs), but also does |
| not validate the table headers of unrecognized tables. |
| |
| Fixed a problem where a notify handler could only be |
| installed/removed on an object of type Device. All "notify" |
| |
| objects are now supported -- Devices, Processor, Power, and |
| Thermal. |
| |
| Removed most verbosity from the ACPI_DB_INFO debug level. Only |
| critical information is returned when this debug level is enabled. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release |
| Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total |
| Debug Version: 138.0K Code, 56.6K Data, 194.6K Total |
| Current Release: |
| Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total |
| Debug Version: 139.8K Code, 57.4K Data, 197.2K Total |
| |
| |
| 2) Linux: |
| |
| The processor driver (acpi_processor.c) now fully supports ACPI |
| 2.0-based processor performance control (e.g. Intel(R) |
| SpeedStep(TM) technology) Note that older laptops that only have |
| the Intel "applet" interface are not supported through this. The |
| 'limit' and 'performance' interface (/proc) are fully functional. |
| [Note that basic policy for controlling performance state |
| transitions will be included in the next version of ospmd.] The |
| idle handler was modified to more aggressively use C2, and PIIX4 |
| errata handling underwent a complete overhaul (big thanks to |
| Dominik Brodowski). |
| |
| Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- |
| based devices in the ACPI namespace are now dynamically bound |
| (associated) with their PCI counterparts (e.g. PCI1->01:00.0). |
| This allows, among other things, ACPI to resolve bus numbers for |
| subordinate PCI bridges. |
| |
| Enhanced PCI IRQ routing to get the proper bus number for _PRT |
| entries defined underneath PCI bridges. |
| |
| Added IBM 600E to bad bios list due to invalid _ADR value for |
| PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. |
| |
| In the process of adding full MADT support (e.g. IOAPIC) for IA32 |
| (acpi.c, mpparse.c) -- stay tuned. |
| |
| Added back visual differentiation between fixed-feature and |
| control-method buttons in dmesg. Buttons are also subtyped (e.g. |
| button/power/PWRF) to simplify button identification. |
| |
| We no longer use -Wno-unused when compiling debug. Please ignore |
| any "_THIS_MODULE defined but not used" messages. |
| |
| Can now shut down the system using "magic sysrq" key. |
| |
| |
| 3) iASL Compiler version 2041: |
| |
| Fixed a problem where conversion errors for hex/octal/decimal |
| constants were not reported. |
| |
| Implemented a fix for the General Register template Address field. |
| This field was 8 bits when it should be 64. |
| |
| Fixed a problem where errors/warnings were no longer being emitted |
| within the listing output file. |
| |
| Implemented the ACPI 2.0A restriction on ACPI Table Signatures to |
| exactly 4 characters, alphanumeric only. |
| |
| |
| |
| |
| ---------------------------------------- |
| Summary of changes for this release: 03_08_02 |
| |
| |
| 1) ACPI CA Core Subsystem Version 20020308: |
| |
| Fixed a problem with AML Fields where the use of the "AccessAny" |
| keyword could cause an interpreter error due to attempting to read |
| or write beyond the end of the parent Operation Region. |
| |
| Fixed a problem in the SystemMemory Operation Region handler where |
| an attempt was made to map memory beyond the end of the region. |
| This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" |
| errors on some Linux systems. |
| |
| Fixed a problem where the interpreter/namespace "search to root" |
| algorithm was not functioning for some object types. Relaxed the |
| internal restriction on the search to allow upsearches for all |
| external object types as well as most internal types. |
| |
| |
| 2) Linux: |
| |
| We now use safe_halt() macro versus individual calls to sti | hlt. |
| |
| Writing to the processor limit interface should now work. "echo 1" |
| will increase the limit, 2 will decrease, and 0 will reset to the |
| |
| default. |
| |
| |
| 3) ASL compiler: |
| |
| Fixed segfault on Linux version. |
| |
| |
| ---------------------------------------- |
| Summary of changes for this release: 02_25_02 |
| |
| 1) ACPI CA Core Subsystem: |
| |
| |
| Fixed a problem where the GPE bit masks were not initialized |
| properly, causing erratic GPE behavior. |
| |
| Implemented limited support for multiple calling conventions. The |
| code can be generated with either the VPL (variable parameter |
| list, or "C") convention, or the FPL (fixed parameter list, or |
| "Pascal") convention. The core subsystem is about 3.4% smaller |
| when generated with FPL. |
| |
| |
| 2) Linux |
| |
| Re-add some /proc/acpi/event functionality that was lost during |
| the rewrite |
| |
| Resolved issue with /proc events for fixed-feature buttons showing |
| up as the system device. |
| |
| Fixed checks on C2/C3 latencies to be inclusive of maximum values. |
| |
| Replaced AE_ERRORs in acpi_osl.c with more specific error codes. |
| |
| Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" |
| |
| Fixed limit interface & usage to fix bugs with passive cooling |
| hysterisis. |
| |
| Restructured PRT support. |
| |
| |
| ---------------------------------------- |
| Summary of changes for this label: 02_14_02 |
| |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented support in AcpiLoadTable to allow loading of FACS and |
| FADT tables. |
| |
| Support for the now-obsolete interim 0.71 64-bit ACPI tables has |
| been removed. All 64-bit platforms should be migrated to the ACPI |
| 2.0 tables. The actbl71.h header has been removed from the source |
| tree. |
| |
| All C macros defined within the subsystem have been prefixed with |
| "ACPI_" to avoid collision with other system include files. |
| |
| Removed the return value for the two AcpiOsPrint interfaces, since |
| it is never used and causes lint warnings for ignoring the return |
| value. |
| |
| Added error checking to all internal mutex acquire and release |
| calls. Although a failure from one of these interfaces is |
| probably a fatal system error, these checks will cause the |
| immediate abort of the currently executing method or interface. |
| |
| Fixed a problem where the AcpiSetCurrentResources interface could |
| fault. This was a side effect of the deployment of the new memory |
| allocation model. |
| |
| Fixed a couple of problems with the Global Lock support introduced |
| in the last major build. The "common" (1.0/2.0) internal FACS was |
| being overwritten with the FACS signature and clobbering the |
| Global Lock pointer. Also, the actual firmware FACS was being |
| unmapped after construction of the "common" FACS, preventing |
| access to the actual Global Lock field within it. The "common" |
| internal FACS is no longer installed as an actual ACPI table; it |
| is used simply as a global. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release (02_07_01) |
| Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total |
| Debug Version: 136.9K Code, 56.4K Data, 193.3K Total |
| Current Release: |
| Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total |
| Debug Version: 138.0K Code, 56.6K Data, 194.6K Total |
| |
| |
| 2) Linux |
| |
| Updated Linux-specific code for core macro and OSL interface |
| changes described above. |
| |
| Improved /proc/acpi/event. It now can be opened only once and has |
| proper poll functionality. |
| |
| Fixed and restructured power management (acpi_bus). |
| |
| Only create /proc "view by type" when devices of that class exist. |
| |
| Fixed "charging/discharging" bug (and others) in acpi_battery. |
| |
| Improved thermal zone code. |
| |
| |
| 3) ASL Compiler, version X2039: |
| |
| |
| Implemented the new compiler restriction on ASL String hex/octal |
| escapes to non-null, ASCII values. An error results if an invalid |
| value is used. (This will require an ACPI 2.0 specification |
| change.) |
| |
| AML object labels that are output to the optional C and ASM source |
| are now prefixed with both the ACPI table signature and table ID |
| to help guarantee uniqueness within a large BIOS project. |
| |
| |
| ---------------------------------------- |
| Summary of changes for this label: 02_01_02 |
| |
| 1) ACPI CA Core Subsystem: |
| |
| ACPI 2.0 support is complete in the entire Core Subsystem and the |
| ASL compiler. All new ACPI 2.0 operators are implemented and all |
| other changes for ACPI 2.0 support are complete. With |
| simultaneous code and data optimizations throughout the subsystem, |
| ACPI 2.0 support has been implemented with almost no additional |
| cost in terms of code and data size. |
| |
| Implemented a new mechanism for allocation of return buffers. If |
| the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will |
| be allocated on behalf of the caller. Consolidated all return |
| buffer validation and allocation to a common procedure. Return |
| buffers will be allocated via the primary OSL allocation interface |
| since it appears that a separate pool is not needed by most users. |
| If a separate pool is required for these buffers, the caller can |
| still use the original mechanism and pre-allocate the buffer(s). |
| |
| Implemented support for string operands within the DerefOf |
| operator. |
| |
| Restructured the Hardware and Event managers to be table driven, |
| simplifying the source code and reducing the amount of generated |
| code. |
| |
| Split the common read/write low-level ACPI register bitfield |
| procedure into a separate read and write, simplifying the code |
| considerably. |
| |
| Obsoleted the AcpiOsCallocate OSL interface. This interface was |
| used only a handful of times and didn't have enough critical mass |
| for a separate interface. Replaced with a common calloc procedure |
| in the core. |
| |
| Fixed a reported problem with the GPE number mapping mechanism |
| that allows GPE1 numbers to be non-contiguous with GPE0. |
| Reorganized the GPE information and shrunk a large array that was |
| originally large enough to hold info for all possible GPEs (256) |
| to simply large enough to hold all GPEs up to the largest GPE |
| number on the machine. |
| |
| Fixed a reported problem with resource structure alignment on 64- |
| bit platforms. |
| |
| Changed the AcpiEnableEvent and AcpiDisableEvent external |
| interfaces to not require any flags for the common case of |
| enabling/disabling a GPE. |
| |
| Implemented support to allow a "Notify" on a Processor object. |
| |
| Most TBDs in comments within the source code have been resolved |
| and eliminated. |
| |
| |
| Fixed a problem in the interpreter where a standalone parent |
| prefix (^) was not handled correctly in the interpreter and |
| debugger. |
| |
| Removed obsolete and unnecessary GPE save/restore code. |
| |
| Implemented Field support in the ASL Load operator. This allows a |
| table to be loaded from a named field, in addition to loading a |
| table directly from an Operation Region. |
| |
| Implemented timeout and handle support in the external Global Lock |
| interfaces. |
| |
| Fixed a problem in the AcpiDump utility where pathnames were no |
| longer being generated correctly during the dump of named objects. |
| |
| Modified the AML debugger to give a full display of if/while |
| predicates instead of just one AML opcode at a time. (The |
| predicate can have several nested ASL statements.) The old method |
| was confusing during single stepping. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release (12_18_01) |
| Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total |
| Debug Version: 138.3K Code, 55.9K Data, 194.2K Total |
| Current Release: |
| Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total |
| Debug Version: 136.9K Code, 56.4K Data, 193.3K Total |
| |
| 2) Linux |
| |
| Implemented fix for PIIX reverse throttling errata (Processor |
| driver) |
| |
| Added new Limit interface (Processor and Thermal drivers) |
| |
| New thermal policy (Thermal driver) |
| |
| Many updates to /proc |
| |
| Battery "low" event support (Battery driver) |
| |
| Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) |
| |
| IA32 - IA64 initialization unification, no longer experimental |
| |
| Menuconfig options redesigned |
| |
| 3) ASL Compiler, version X2037: |
| |
| Implemented several new output features to simplify integration of |
| AML code into firmware: 1) Output the AML in C source code with |
| labels for each named ASL object. The original ASL source code |
| is interleaved as C comments. 2) Output the AML in ASM source code |
| with labels and interleaved ASL source. 3) Output the AML in |
| raw hex table form, in either C or ASM. |
| |
| Implemented support for optional string parameters to the |
| LoadTable operator. |
| |
| Completed support for embedded escape sequences within string |
| literals. The compiler now supports all single character escapes |
| as well as the Octal and Hex escapes. Note: the insertion of a |
| null byte into a string literal (via the hex/octal escape) causes |
| the string to be immediately terminated. A warning is issued. |
| |
| Fixed a problem where incorrect AML was generated for the case |
| where an ASL namepath consists of a single parent prefix ( |
| |
| ) with no trailing name segments. |
| |
| The compiler has been successfully generated with a 64-bit C |
| compiler. |
| |
| |
| |
| |
| ---------------------------------------- |
| Summary of changes for this label: 12_18_01 |
| |
| 1) Linux |
| |
| Enhanced blacklist with reason and severity fields. Any table's |
| signature may now be used to identify a blacklisted system. |
| |
| Call _PIC control method to inform the firmware which interrupt |
| model the OS is using. Turn on any disabled link devices. |
| |
| Cleaned up busmgr /proc error handling (Andreas Dilger) |
| |
| 2) ACPI CA Core Subsystem: |
| |
| Implemented ACPI 2.0 semantics for the "Break" operator (Exit from |
| while loop) |
| |
| Completed implementation of the ACPI 2.0 "Continue", |
| "ConcatenateResTemplate", "DataTableRegion", and "LoadTable" |
| operators. All new ACPI 2.0 operators are now implemented in both |
| the ASL compiler and the AML interpreter. The only remaining ACPI |
| 2.0 task is support for the String data type in the DerefOf |
| operator. Fixed a problem with AcquireMutex where the status code |
| was lost if the caller had to actually wait for the mutex. |
| |
| Increased the maximum ASL Field size from 64K bits to 4G bits. |
| |
| Completed implementation of the external Global Lock interfaces -- |
| AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and |
| Handler parameters were added. |
| |
| Completed another pass at removing warnings and issues when |
| compiling with 64-bit compilers. The code now compiles cleanly |
| with the Intel 64-bit C/C++ compiler. Most notably, the pointer |
| add and subtract (diff) macros have changed considerably. |
| |
| |
| Created and deployed a new ACPI_SIZE type that is 64-bits wide on |
| 64-bit platforms, 32-bits on all others. This type is used |
| wherever memory allocation and/or the C sizeof() operator is used, |
| and affects the OSL memory allocation interfaces AcpiOsAllocate |
| and AcpiOsCallocate. |
| |
| Implemented sticky user breakpoints in the AML debugger. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release (12_05_01) |
| Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total |
| Debug Version: 136.2K Code, 55.6K Data, 191.8K Total |
| Current Release: |
| Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total |
| Debug Version: 138.3K Code, 55.9K Data, 194.2K Total |
| |
| 3) ASL Compiler, version X2034: |
| |
| Now checks for (and generates an error if detected) the use of a |
| Break or Continue statement without an enclosing While statement. |
| |
| |
| Successfully generated the compiler with the Intel 64-bit C |
| compiler. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 12_05_01 |
| |
| 1) ACPI CA Core Subsystem: |
| |
| The ACPI 2.0 CopyObject operator is fully implemented. This |
| operator creates a new copy of an object (and is also used to |
| bypass the "implicit conversion" mechanism of the Store operator.) |
| |
| The ACPI 2.0 semantics for the SizeOf operator are fully |
| implemented. The change is that performing a SizeOf on a |
| reference object causes an automatic dereference of the object to |
| the actual value before the size is evaluated. This behavior was |
| undefined in ACPI 1.0. |
| |
| The ACPI 2.0 semantics for the Extended IRQ resource descriptor |
| have been implemented. The interrupt polarity and mode are now |
| independently set. |
| |
| Fixed a problem where ASL Constants (Zero, One, Ones, Revision) |
| appearing in Package objects were not properly converted to |
| integers when the internal Package was converted to an external |
| object (via the AcpiEvaluateObject interface.) |
| |
| Fixed a problem with the namespace object deletion mechanism for |
| objects created by control methods. There were two parts to this |
| problem: 1) Objects created during the initialization phase method |
| parse were not being deleted, and 2) The object owner ID mechanism |
| to track objects was broken. |
| |
| Fixed a problem where the use of the ASL Scope operator within a |
| control method would result in an invalid opcode exception. |
| |
| Fixed a problem introduced in the previous label where the buffer |
| length required for the _PRT structure was not being returned |
| correctly. |
| |
| Code and Data Size: Current core subsystem library sizes are shown |
| below. These are the code and data sizes for the acpica.lib |
| produced by the Microsoft Visual C++ 6.0 compiler, and these |
| values do not include any ACPI driver or OSPM code. The debug |
| version of the code includes the debug output trace mechanism and |
| has a larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Release (11_20_01) |
| Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total |
| Debug Version: 135.1K Code, 55.4K Data, 190.5K Total |
| |
| Current Release: |
| Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total |
| Debug Version: 136.2K Code, 55.6K Data, 191.8K Total |
| |
| 2) Linux: |
| |
| Updated all files to apply cleanly against 2.4.16. |
| |
| Added basic PCI Interrupt Routing Table (PRT) support for IA32 |
| (acpi_pci.c), and unified the PRT code for IA32 and IA64. This |
| version supports both static and dynamic PRT entries, but dynamic |
| entries are treated as if they were static (not yet |
| reconfigurable). Architecture- specific code to use this data is |
| absent on IA32 but should be available shortly. |
| |
| Changed the initialization sequence to start the ACPI interpreter |
| (acpi_init) prior to initialization of the PCI driver (pci_init) |
| in init/main.c. This ordering is required to support PRT and |
| facilitate other (future) enhancement. A side effect is that the |
| ACPI bus driver and certain device drivers can no longer be loaded |
| as modules. |
| |
| Modified the 'make menuconfig' options to allow PCI Interrupt |
| Routing support to be included without the ACPI Bus and other |
| device drivers. |
| |
| 3) ASL Compiler, version X2033: |
| |
| Fixed some issues with the use of the new CopyObject and |
| DataTableRegion operators. Both are fully functional. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 11_20_01 |
| |
| 20 November 2001. Summary of changes for this release. |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Updated Index support to match ACPI 2.0 semantics. Storing a |
| Integer, String, or Buffer to an Index of a Buffer will store only |
| the least-significant byte of the source to the Indexed buffer |
| byte. Multiple writes are not performed. |
| |
| Fixed a problem where the access type used in an AccessAs ASL |
| operator was not recorded correctly into the field object. |
| |
| Fixed a problem where ASL Event objects were created in a |
| signalled state. Events are now created in an unsignalled state. |
| |
| The internal object cache is now purged after table loading and |
| initialization to reduce the use of dynamic kernel memory -- on |
| the assumption that object use is greatest during the parse phase |
| of the entire table (versus the run-time use of individual control |
| methods.) |
| |
| ACPI 2.0 variable-length packages are now fully operational. |
| |
| Code and Data Size: Code and Data optimizations have permitted new |
| feature development with an actual reduction in the library size. |
| Current core subsystem library sizes are shown below. These are |
| the code and data sizes for the acpica.lib produced by the |
| Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code |
| includes the debug output trace mechanism and has a larger code |
| and data size. Note that these values will vary depending on the |
| efficiency of the compiler and the compiler options used during |
| generation. |
| |
| Previous Release (11_09_01): |
| Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total |
| Debug Version: 134.5K Code, 55.4K Data, 189.9K Total |
| |
| Current Release: |
| Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total |
| Debug Version: 135.1K Code, 55.4K Data, 190.5K Total |
| |
| 2) Linux: |
| |
| Enhanced the ACPI boot-time initialization code to allow the use |
| of Local APIC tables for processor enumeration on IA-32, and to |
| pave the way for a fully MPS-free boot (on SMP systems) in the |
| near future. This functionality replaces |
| arch/i386/kernel/acpitables.c, which was introduced in an earlier |
| 2.4.15-preX release. To enable this feature you must add |
| "acpi_boot=on" to the kernel command line -- see the help entry |
| for CONFIG_ACPI_BOOT for more information. An IA-64 release is in |
| the works... |
| |
| Restructured the configuration options to allow boot-time table |
| parsing support without inclusion of the ACPI Interpreter (and |
| other) code. |
| |
| NOTE: This release does not include fixes for the reported events, |
| power-down, and thermal passive cooling issues (coming soon). |
| |
| 3) ASL Compiler: |
| |
| Added additional typechecking for Fields within restricted access |
| Operation Regions. All fields within EC and CMOS regions must be |
| declared with ByteAcc. All fields within SMBus regions must be |
| declared with the BufferAcc access type. |
| |
| Fixed a problem where the listing file output of control methods |
| no longer interleaved the actual AML code with the ASL source |
| code. |
| |
| |
| |
| |
| ---------------------------------------- |
| Summary of changes for this label: 11_09_01 |
| |
| 1) ACPI CA Core Subsystem: |
| |
| Implemented ACPI 2.0-defined support for writes to fields with a |
| Buffer, String, or Integer source operand that is smaller than the |
| target field. In these cases, the source operand is zero-extended |
| to fill the target field. |
| |
| Fixed a problem where a Field starting bit offset (within the |
| parent operation region) was calculated incorrectly if the |
| |
| alignment of the field differed from the access width. This |
| affected CreateWordField, CreateDwordField, CreateQwordField, and |
| possibly other fields that use the "AccessAny" keyword. |
| |
| Fixed a problem introduced in the 11_02_01 release where indirect |
| stores through method arguments did not operate correctly. |
| |
| 2) Linux: |
| |
| Implemented boot-time ACPI table parsing support |
| (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code |
| facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than |
| legacy BIOS interfaces (e.g. MPS) for the configuration of system |
| processors, memory, and interrupts during setup_arch(). Note that |
| this patch does not include the required architecture-specific |
| changes required to apply this information -- subsequent patches |
| will be posted for both IA32 and IA64 to achieve this. |
| |
| Added low-level sleep support for IA32 platforms, courtesy of Pat |
| Mochel. This allows IA32 systems to transition to/from various |
| sleeping states (e.g. S1, S3), although the lack of a centralized |
| driver model and power-manageable drivers will prevent its |
| (successful) use on most systems. |
| |
| Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" |
| submenu, unified IA32 and IA64 options, added new "Boot using ACPI |
| tables" option, etc. |
| |
| Increased the default timeout for the EC driver from 1ms to 10ms |
| (1000 cycles of 10us) to try to address AE_TIME errors during EC |
| transactions. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 11_02_01 |
| |
| 1) ACPI CA Core Subsystem: |
| |
| ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access |
| (QWordAcc keyword). All ACPI 2.0 64-bit support is now |
| implemented. |
| |
| OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required |
| changes to support ACPI 2.0 Qword field access. Read/Write |
| PciConfiguration(), Read/Write Memory(), and Read/Write Port() now |
| accept an ACPI_INTEGER (64 bits) as the value parameter. Also, |
| the value parameter for the address space handler interface is now |
| an ACPI_INTEGER. OSL implementations of these interfaces must now |
| handle the case where the Width parameter is 64. |
| |
| Index Fields: Fixed a problem where unaligned bit assembly and |
| disassembly for IndexFields was not supported correctly. |
| |
| Index and Bank Fields: Nested Index and Bank Fields are now |
| supported. During field access, a check is performed to ensure |
| that the value written to an Index or Bank register is not out of |
| the range of the register. The Index (or Bank) register is |
| written before each access to the field data. Future support will |
| include allowing individual IndexFields to be wider than the |
| DataRegister width. |
| |
| Fields: Fixed a problem where the AML interpreter was incorrectly |
| attempting to write beyond the end of a Field/OpRegion. This was |
| a boundary case that occurred when a DWORD field was written to a |
| BYTE access OpRegion, forcing multiple writes and causing the |
| interpreter to write one datum too many. |
| |
| Fields: Fixed a problem with Field/OpRegion access where the |
| starting bit address of a field was incorrectly calculated if the |
| current access type was wider than a byte (WordAcc, DwordAcc, or |
| QwordAcc). |
| |
| Fields: Fixed a problem where forward references to individual |
| FieldUnits (individual Field names within a Field definition) were |
| not resolved during the AML table load. |
| |
| Fields: Fixed a problem where forward references from a Field |
| definition to the parent Operation Region definition were not |
| resolved during the AML table load. |
| |
| Fields: Duplicate FieldUnit names within a scope are now detected |
| during AML table load. |
| |
| Acpi Interfaces: Fixed a problem where the AcpiGetName() interface |
| returned an incorrect name for the root node. |
| |
| Code and Data Size: Code and Data optimizations have permitted new |
| feature development with an actual reduction in the library size. |
| Current core subsystem library sizes are shown below. These are |
| the code and data sizes for the acpica.lib produced by the |
| Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code |
| includes the debug output trace mechanism and has a larger code |
| and data size. Note that these values will vary depending on the |
| efficiency of the compiler and the compiler options used during |
| generation. |
| |
| Previous Release (10_18_01): |
| Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total |
| Debug Version: 136.7K Code, 57.4K Data, 194.2K Total |
| |
| Current Release: |
| Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total |
| Debug Version: 134.5K Code, 55.4K Data, 189.9K Total |
| |
| 2) Linux: |
| |
| Improved /proc processor output (Pavel Machek) Re-added |
| MODULE_LICENSE("GPL") to all modules. |
| |
| 3) ASL Compiler version X2030: |
| |
| Duplicate FieldUnit names within a scope are now detected and |
| flagged as errors. |
| |
| 4) Documentation: |
| |
| Programmer Reference updated to reflect OSL and address space |
| handler interface changes described above. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 10_18_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Fixed a problem with the internal object reference count mechanism |
| that occasionally caused premature object deletion. This resolves |
| all of the outstanding problem reports where an object is deleted |
| in the middle of an interpreter evaluation. Although this problem |
| only showed up in rather obscure cases, the solution to the |
| problem involved an adjustment of all reference counts involving |
| objects attached to namespace nodes. |
| |
| Fixed a problem with Field support in the interpreter where |
| writing to an aligned field whose length is an exact multiple (2 |
| or greater) of the field access granularity would cause an attempt |
| to write beyond the end of the field. |
| |
| The top level AML opcode execution functions within the |
| interpreter have been renamed with a more meaningful and |
| consistent naming convention. The modules exmonad.c and |
| exdyadic.c were eliminated. New modules are exoparg1.c, |
| exoparg2.c, exoparg3.c, and exoparg6.c. |
| |
| Support for the ACPI 2.0 "Mid" ASL operator has been implemented. |
| |
| Fixed a problem where the AML debugger was causing some internal |
| objects to not be deleted during subsystem termination. |
| |
| Fixed a problem with the external AcpiEvaluateObject interface |
| where the subsystem would fault if the named object to be |
| evaluated referred to a constant such as Zero, Ones, etc. |
| |
| Fixed a problem with IndexFields and BankFields where the |
| subsystem would fault if the index, data, or bank registers were |
| not defined in the same scope as the field itself. |
| |
| Added printf format string checking for compilers that support |
| this feature. Corrected more than 50 instances of issues with |
| format specifiers within invocations of ACPI_DEBUG_PRINT |
| throughout the core subsystem code. |
| |
| The ASL "Revision" operator now returns the ACPI support level |
| implemented in the core - the value "2" since the ACPI 2.0 support |
| is more than 50% implemented. |
| |
| Enhanced the output of the AML debugger "dump namespace" command |
| to output in a more human-readable form. |
| |
| Current core subsystem library code sizes are shown below. These |
| |
| are the code and data sizes for the acpica.lib produced by the |
| Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code |
| includes the full debug trace mechanism -- leading to a much |
| |
| larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Previous Label (09_20_01): |
| Non-Debug Version: 65K Code, 5K Data, 70K Total |
| Debug Version: 138K Code, 58K Data, 196K Total |
| |
| This Label: |
| |
| Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total |
| Debug Version: 136.7K Code, 57.4K Data, 194.2K Total |
| |
| Linux: |
| |
| Implemented a "Bad BIOS Blacklist" to track machines that have |
| known ASL/AML problems. |
| |
| Enhanced the /proc interface for the thermal zone driver and added |
| support for _HOT (the critical suspend trip point). The 'info' |
| file now includes threshold/policy information, and allows setting |
| of _SCP (cooling preference) and _TZP (polling frequency) values |
| to the 'info' file. Examples: "echo tzp=5 > info" sets the polling |
| frequency to 5 seconds, and "echo scp=1 > info" sets the cooling |
| preference to the passive/quiet mode (if supported by the ASL). |
| |
| Implemented a workaround for a gcc bug that resuted in an OOPs |
| when loading the control method battery driver. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 09_20_01 |
| |
| ACPI CA Core Subsystem: |
| |
| The AcpiEnableEvent and AcpiDisableEvent interfaces have been |
| modified to allow individual GPE levels to be flagged as wake- |
| enabled (i.e., these GPEs are to remain enabled when the platform |
| sleeps.) |
| |
| The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now |
| support wake-enabled GPEs. This means that upon entering the |
| sleep state, all GPEs that are not wake-enabled are disabled. |
| When leaving the sleep state, these GPEs are re-enabled. |
| |
| A local double-precision divide/modulo module has been added to |
| enhance portability to OS kernels where a 64-bit math library is |
| not available. The new module is "utmath.c". |
| |
| Several optimizations have been made to reduce the use of CPU |
| stack. Originally over 2K, the maximum stack usage is now below |
| 2K at 1860 bytes (1.82k) |
| |
| Fixed a problem with the AcpiGetFirmwareTable interface where the |
| root table pointer was not mapped into a logical address properly. |
| |
| Fixed a problem where a NULL pointer was being dereferenced in the |
| interpreter code for the ASL Notify operator. |
| |
| Fixed a problem where the use of the ASL Revision operator |
| returned an error. This operator now returns the current version |
| of the ACPI CA core subsystem. |
| |
| Fixed a problem where objects passed as control method parameters |
| to AcpiEvaluateObject were always deleted at method termination. |
| However, these objects may end up being stored into the namespace |
| by the called method. The object reference count mechanism was |
| applied to these objects instead of a force delete. |
| |
| Fixed a problem where static strings or buffers (contained in the |
| AML code) that are declared as package elements within the ASL |
| code could cause a fault because the interpreter would attempt to |
| delete them. These objects are now marked with the "static |
| object" flag to prevent any attempt to delete them. |
| |
| Implemented an interpreter optimization to use operands directly |
| from the state object instead of extracting the operands to local |
| variables. This reduces stack use and code size, and improves |
| performance. |
| |
| The module exxface.c was eliminated as it was an unnecessary extra |
| layer of code. |
| |
| Current core subsystem library code sizes are shown below. These |
| are the code and data sizes for the acpica.lib produced by the |
| Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code |
| includes the full debug trace mechanism -- leading to a much |
| larger code and data size. Note that these values will vary |
| depending on the efficiency of the compiler and the compiler |
| options used during generation. |
| |
| Non-Debug Version: 65K Code, 5K Data, 70K Total |
| (Previously 69K) Debug Version: 138K Code, 58K Data, 196K |
| Total (Previously 195K) |
| |
| Linux: |
| |
| Support for ACPI 2.0 64-bit integers has been added. All ACPI |
| Integer objects are now 64 bits wide |
| |
| All Acpi data types and structures are now in lower case. Only |
| Acpi macros are upper case for differentiation. |
| |
| Documentation: |
| |
| Changes to the external interfaces as described above. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 08_31_01 |
| |
| ACPI CA Core Subsystem: |
| |
| A bug with interpreter implementation of the ASL Divide operator |
| was found and fixed. The implicit function return value (not the |
| explicit store operands) was returning the remainder instead of |
| the quotient. This was a longstanding bug and it fixes several |
| known outstanding issues on various platforms. |
| |
| The ACPI_DEBUG_PRINT and function trace entry/exit macros have |
| been further optimized for size. There are 700 invocations of the |
| DEBUG_PRINT macro alone, so each optimization reduces the size of |
| the debug version of the subsystem significantly. |
| |
| A stack trace mechanism has been implemented. The maximum stack |
| usage is about 2K on 32-bit platforms. The debugger command "stat |
| stack" will display the current maximum stack usage. |
| |
| All public symbols and global variables within the subsystem are |
| now prefixed with the string "Acpi". This keeps all of the |
| symbols grouped together in a kernel map, and avoids conflicts |
| with other kernel subsystems. |
| |
| Most of the internal fixed lookup tables have been moved into the |
| code segment via the const operator. |
| |
| Several enhancements have been made to the interpreter to both |
| reduce the code size and improve performance. |
| |
| Current core subsystem library code sizes are shown below. These |
| are the code and data sizes for the acpica.lib produced by the |
| Microsoft Visual C++ 6.0 compiler, and these values do not include |
| any ACPI driver or OSPM code. The debug version of the code |
| includes the full debug trace mechanism which contains over 700 |
| invocations of the DEBUG_PRINT macro, 500 function entry macro |
| invocations, and over 900 function exit macro invocations -- |
| leading to a much larger code and data size. Note that these |
| values will vary depending on the efficiency of the compiler and |
| the compiler options used during generation. |
| |
| Non-Debug Version: 64K Code, 5K Data, 69K Total |
| Debug Version: 137K Code, 58K Data, 195K Total |
| |
| Linux: |
| |
| Implemented wbinvd() macro, pending a kernel-wide definition. |
| |
| Fixed /proc/acpi/event to handle poll() and short reads. |
| |
| ASL Compiler, version X2026: |
| |
| Fixed a problem introduced in the previous label where the AML |
| |
| code emitted for package objects produced packages with zero |
| length. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 08_16_01 |
| |
| ACPI CA Core Subsystem: |
| |
| The following ACPI 2.0 ASL operators have been implemented in the |
| AML interpreter (These are already supported by the Intel ASL |
| compiler): ToDecimalString, ToHexString, ToString, ToInteger, and |
| ToBuffer. Support for 64-bit AML constants is implemented in the |
| AML parser, debugger, and disassembler. |
| |
| The internal memory tracking mechanism (leak detection code) has |
| been upgraded to reduce the memory overhead (a separate tracking |
| block is no longer allocated for each memory allocation), and now |
| supports all of the internal object caches. |
| |
| The data structures and code for the internal object caches have |
| been coelesced and optimized so that there is a single cache and |
| memory list data structure and a single group of functions that |
| implement generic cache management. This has reduced the code |
| size in both the debug and release versions of the subsystem. |
| |
| The DEBUG_PRINT macro(s) have been optimized for size and replaced |
| by ACPI_DEBUG_PRINT. The syntax for this macro is slightly |
| different, because it generates a single call to an internal |
| function. This results in a savings of about 90 bytes per |
| invocation, resulting in an overall code and data savings of about |
| 16% in the debug version of the subsystem. |
| |
| Linux: |
| |
| Fixed C3 disk corruption problems and re-enabled C3 on supporting |
| machines. |
| |
| Integrated low-level sleep code by Patrick Mochel. |
| |
| Further tweaked source code Linuxization. |
| |
| Other minor fixes. |
| |
| ASL Compiler: |
| |
| Support for ACPI 2.0 variable length packages is fixed/completed. |
| |
| Fixed a problem where the optional length parameter for the ACPI |
| 2.0 ToString operator. |
| |
| Fixed multiple extraneous error messages when a syntax error is |
| detected within the declaration line of a control method. |
| |
| ---------------------------------------- |
| Summary of changes for this label: 07_17_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Added a new interface named AcpiGetFirmwareTable to obtain any |
| ACPI table via the ACPI signature. The interface can be called at |
| any time during kernel initialization, even before the kernel |
| virtual memory manager is initialized and paging is enabled. This |
| allows kernel subsystems to obtain ACPI tables very early, even |
| before the ACPI CA subsystem is initialized. |
| |
| Fixed a problem where Fields defined with the AnyAcc attribute |
| could be resolved to the incorrect address under the following |
| conditions: 1) the field width is larger than 8 bits and 2) the |
| parent operation region is not defined on a DWORD boundary. |
| |
| Fixed a problem where the interpreter is not being locked during |
| namespace initialization (during execution of the _INI control |
| methods), causing an error when an attempt is made to release it |
| later. |
| |
| ACPI 2.0 support in the AML Interpreter has begun and will be |
| ongoing throughout the rest of this year. In this label, The Mod |
| operator is implemented. |
| |
| Added a new data type to contain full PCI addresses named |
| ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, |
| and Function values. |
| |
| Linux: |
| |
| Enhanced the Linux version of the source code to change most |
| capitalized ACPI type names to lowercase. For example, all |
| instances of ACPI_STATUS are changed to acpi_status. This will |
| result in a large diff, but the change is strictly cosmetic and |
| aligns the CA code closer to the Linux coding standard. |
| |
| OSL Interfaces: |
| |
| The interfaces to the PCI configuration space have been changed to |
| add the PCI Segment number and to split the single 32-bit combined |
| DeviceFunction field into two 16-bit fields. This was |
| accomplished by moving the four values that define an address in |
| PCI configuration space (segment, bus, device, and function) to |
| the new ACPI_PCI_ID structure. |
| |
| The changes to the PCI configuration space interfaces led to a |
| reexamination of the complete set of address space access |
| interfaces for PCI, I/O, and Memory. The previously existing 18 |
| interfaces have proven difficult to maintain (any small change |
| must be propagated across at least 6 interfaces) and do not easily |
| allow for future expansion to 64 bits if necessary. Also, on some |
| systems, it would not be appropriate to demultiplex the access |
| width (8, 16, 32,or 64) before calling the OSL if the |
| corresponding native OS interfaces contain a similar access width |
| parameter. For these reasons, the 18 address space interfaces |
| have been replaced by these 6 new ones: |
| |
| AcpiOsReadPciConfiguration |
| AcpiOsWritePciConfiguration |
| AcpiOsReadMemory |
| AcpiOsWriteMemory |
| AcpiOsReadPort |
| AcpiOsWritePort |
| |
| Added a new interface named AcpiOsGetRootPointer to allow the OSL |
| to perform the platform and/or OS-specific actions necessary to |
| obtain the ACPI RSDP table pointer. On IA-32 platforms, this |
| interface will simply call down to the CA core to perform the low- |
| memory search for the table. On IA-64, the RSDP is obtained from |
| EFI. Migrating this interface to the OSL allows the CA core to |
| |
| remain OS and platform independent. |
| |
| Added a new interface named AcpiOsSignal to provide a generic |
| "function code and pointer" interface for various miscellaneous |
| signals and notifications that must be made to the host OS. The |
| first such signals are intended to support the ASL Fatal and |
| Breakpoint operators. In the latter case, the AcpiOsBreakpoint |
| interface has been obsoleted. |
| |
| The definition of the AcpiFormatException interface has been |
| changed to simplify its use. The caller no longer must supply a |
| buffer to the call; A pointer to a const string is now returned |
| directly. This allows the call to be easily used in printf |
| statements, etc. since the caller does not have to manage a local |
| buffer. |
| |
| |
| ASL Compiler, Version X2025: |
| |
| The ACPI 2.0 Switch/Case/Default operators have been implemented |
| and are fully functional. They will work with all ACPI 1.0 |
| interpreters, since the operators are simply translated to If/Else |
| pairs. |
| |
| The ACPI 2.0 ElseIf operator is implemented and will also work |
| with 1.0 interpreters, for the same reason. |
| |
| Implemented support for ACPI 2.0 variable-length packages. These |
| packages have a separate opcode, and their size is determined by |
| the interpreter at run-time. |
| |
| Documentation The ACPI CA Programmer Reference has been updated to |
| reflect the new interfaces and changes to existing interfaces. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 06_15_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Fixed a problem where a DWORD-accessed field within a Buffer |
| object would get its byte address inadvertently rounded down to |
| the nearest DWORD. Buffers are always Byte-accessible. |
| |
| ASL Compiler, version X2024: |
| |
| Fixed a problem where the Switch() operator would either fault or |
| hang the compiler. Note however, that the AML code for this ACPI |
| 2.0 operator is not yet implemented. |
| |
| Compiler uses the new AcpiOsGetTimer interface to obtain compile |
| timings. |
| |
| Implementation of the CreateField operator automatically converts |
| a reference to a named field within a resource descriptor from a |
| byte offset to a bit offset if required. |
| |
| Added some missing named fields from the resource descriptor |
| support. These are the names that are automatically created by the |
| compiler to reference fields within a descriptor. They are only |
| valid at compile time and are not passed through to the AML |
| interpreter. |
| |
| Resource descriptor named fields are now typed as Integers and |
| subject to compile-time typechecking when used in expressions. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 05_18_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Fixed a couple of problems in the Field support code where bits |
| from adjacent fields could be returned along with the proper field |
| bits. Restructured the field support code to improve performance, |
| readability and maintainability. |
| |
| New DEBUG_PRINTP macro automatically inserts the procedure name |
| into the output, saving hundreds of copies of procedure name |
| strings within the source, shrinking the memory footprint of the |
| debug version of the core subsystem. |
| |
| Source Code Structure: |
| |
| The source code directory tree was restructured to reflect the |
| current organization of the component architecture. Some files |
| and directories have been moved and/or renamed. |
| |
| Linux: |
| |
| Fixed leaking kacpidpc processes. |
| |
| Fixed queueing event data even when /proc/acpi/event is not |
| opened. |
| |
| ASL Compiler, version X2020: |
| |
| Memory allocation performance enhancement - over 24X compile time |
| improvement on large ASL files. Parse nodes and namestring |
| buffers are now allocated from a large internal compiler buffer. |
| |
| The temporary .SRC file is deleted unless the "-s" option is |
| specified |
| |
| The "-d" debug output option now sends all output to the .DBG file |
| instead of the console. |
| |
| "External" second parameter is now optional |
| |
| "ElseIf" syntax now properly allows the predicate |
| |
| Last operand to "Load" now recognized as a Target operand |
| |
| Debug object can now be used anywhere as a normal object. |
| |
| ResourceTemplate now returns an object of type BUFFER |
| |
| EISAID now returns an object of type INTEGER |
| |
| "Index" now works with a STRING operand |
| |
| "LoadTable" now accepts optional parameters |
| |
| "ToString" length parameter is now optional |
| |
| "Interrupt (ResourceType," parse error fixed. |
| |
| "Register" with a user-defined region space parse error fixed |
| |
| Escaped backslash at the end of a string ("\\") scan/parse error |
| fixed |
| |
| "Revision" is now an object of type INTEGER. |
| |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 05_02_01 |
| |
| Linux: |
| |
| /proc/acpi/event now blocks properly. |
| |
| Removed /proc/sys/acpi. You can still dump your DSDT from |
| /proc/acpi/dsdt. |
| |
| ACPI CA Core Subsystem: |
| |
| Fixed a problem introduced in the previous label where some of the |
| "small" resource descriptor types were not recognized. |
| |
| Improved error messages for the case where an ASL Field is outside |
| the range of the parent operation region. |
| |
| ASL Compiler, version X2018: |
| |
| |
| Added error detection for ASL Fields that extend beyond the length |
| of the parent operation region (only if the length of the region |
| is known at compile time.) This includes fields that have a |
| minimum access width that is smaller than the parent region, and |
| individual field units that are partially or entirely beyond the |
| extent of the parent. |
| |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 04_27_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Fixed a problem where the namespace mutex could be released at the |
| wrong time during execution of AcpiRemoveAddressSpaceHandler. |
| |
| Added optional thread ID output for debug traces, to simplify |
| debugging of multiple threads. Added context switch notification |
| when the debug code realizes that a different thread is now |
| executing ACPI code. |
| |
| Some additional external data types have been prefixed with the |
| string "ACPI_" for consistency. This may effect existing code. |
| The data types affected are the external callback typedefs - e.g., |
| |
| WALK_CALLBACK becomes ACPI_WALK_CALLBACK. |
| |
| Linux: |
| |
| Fixed an issue with the OSL semaphore implementation where a |
| thread was waking up with an error from receiving a SIGCHLD |
| signal. |
| |
| Linux version of ACPI CA now uses the system C library for string |
| manipulation routines instead of a local implementation. |
| |
| Cleaned up comments and removed TBDs. |
| |
| ASL Compiler, version X2017: |
| |
| Enhanced error detection and reporting for all file I/O |
| operations. |
| |
| Documentation: |
| |
| Programmer Reference updated to version 1.06. |
| |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 04_13_01 |
| |
| ACPI CA Core Subsystem: |
| |
| Restructured support for BufferFields and RegionFields. |
| BankFields support is now fully operational. All known 32-bit |
| limitations on field sizes have been removed. Both BufferFields |
| and (Operation) RegionFields are now supported by the same field |
| management code. |
| |
| Resource support now supports QWORD address and IO resources. The |
| 16/32/64 bit address structures and the Extended IRQ structure |
| have been changed to properly handle Source Resource strings. |
| |
| A ThreadId of -1 is now used to indicate a "mutex not acquired" |
| condition internally and must never be returned by AcpiOsThreadId. |
| This reserved value was changed from 0 since Unix systems allow a |
| thread ID of 0. |
| |
| Linux: |
| |
| Driver code reorganized to enhance portability |
| |
| Added a kernel configuration option to control ACPI_DEBUG |
| |
| Fixed the EC driver to honor _GLK. |
| |
| ASL Compiler, version X2016: |
| |
| Fixed support for the "FixedHw" keyword. Previously, the FixedHw |
| address space was set to 0, not 0x7f as it should be. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 03_13_01 |
| |
| ACPI CA Core Subsystem: |
| |
| During ACPI initialization, the _SB_._INI method is now run if |
| present. |
| |
| Notify handler fix - notifies are deferred until the parent method |
| completes execution. This fixes the "mutex already acquired" |
| issue seen occasionally. |
| |
| Part of the "implicit conversion" rules in ACPI 2.0 have been |
| found to cause compatibility problems with existing ASL/AML. The |
| convert "result-to-target-type" implementation has been removed |
| for stores to method Args and Locals. Source operand conversion |
| is still fully implemented. Possible changes to ACPI 2.0 |
| specification pending. |
| |
| Fix to AcpiRsCalculatePciRoutingTableLength to return correct |
| length. |
| |
| Fix for compiler warnings for 64-bit compiles. |
| |
| Linux: |
| |
| /proc output aligned for easier parsing. |
| |
| Release-version compile problem fixed. |
| |
| New kernel configuration options documented in Configure.help. |
| |
| IBM 600E - Fixed Sleep button may generate "Invalid <NULL> |
| context" message. |
| |
| OSPM: |
| |
| Power resource driver integrated with bus manager. |
| |
| Fixed kernel fault during active cooling for thermal zones. |
| |
| Source Code: |
| |
| The source code tree has been restructured. |
| |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 03_02_01 |
| |
| Linux OS Services Layer (OSL): |
| |
| Major revision of all Linux-specific code. |
| |
| Modularized all ACPI-specific drivers. |
| |
| Added new thermal zone and power resource drivers. |
| |
| Revamped /proc interface (new functionality is under /proc/acpi). |
| |
| New kernel configuration options. |
| |
| Linux known issues: |
| |
| New kernel configuration options not documented in Configure.help |
| yet. |
| |
| |
| Module dependencies not currently implemented. If used, they |
| should be loaded in this order: busmgr, power, ec, system, |
| processor, battery, ac_adapter, button, thermal. |
| |
| Modules will not load if CONFIG_MODVERSION is set. |
| |
| IBM 600E - entering S5 may reboot instead of shutting down. |
| |
| IBM 600E - Sleep button may generate "Invalid <NULL> context" |
| message. |
| |
| Some systems may fail with "execution mutex already acquired" |
| message. |
| |
| ACPI CA Core Subsystem: |
| |
| Added a new OSL Interface, AcpiOsGetThreadId. This was required |
| for the deadlock detection code. Defined to return a non-zero, 32- |
| bit thread ID for the currently executing thread. May be a non- |
| zero constant integer on single-thread systems. |
| |
| Implemented deadlock detection for internal subsystem mutexes. We |
| may add conditional compilation for this code (debug only) later. |
| |
| ASL/AML Mutex object semantics are now fully supported. This |
| includes multiple acquires/releases by owner and support for the |
| |
| Mutex SyncLevel parameter. |
| |
| A new "Force Release" mechanism automatically frees all ASL |
| Mutexes that have been acquired but not released when a thread |
| exits the interpreter. This forces conformance to the ACPI spec |
| ("All mutexes must be released when an invocation exits") and |
| prevents deadlocked ASL threads. This mechanism can be expanded |
| (later) to monitor other resource acquisitions if OEM ASL code |
| continues to misbehave (which it will). |
| |
| Several new ACPI exception codes have been added for the Mutex |
| support. |
| |
| Recursive method calls are now allowed and supported (the ACPI |
| spec does in fact allow recursive method calls.) The number of |
| recursive calls is subject to the restrictions imposed by the |
| SERIALIZED method keyword and SyncLevel (ACPI 2.0) method |
| parameter. |
| |
| Implemented support for the SyncLevel parameter for control |
| methods (ACPI 2.0 feature) |
| |
| Fixed a deadlock problem when multiple threads attempted to use |
| the interpreter. |
| |
| Fixed a problem where the string length of a String package |
| element was not always set in a package returned from |
| AcpiEvaluateObject. |
| |
| Fixed a problem where the length of a String package element was |
| not always included in the length of the overall package returned |
| from AcpiEvaluateObject. |
| |
| Added external interfaces (Acpi*) to the ACPI debug memory |
| manager. This manager keeps a list of all outstanding |
| allocations, and can therefore detect memory leaks and attempts to |
| free memory blocks more than once. Useful for code such as the |
| power manager, etc. May not be appropriate for device drivers. |
| Performance with the debug code enabled is slow. |
| |
| The ACPI Global Lock is now an optional hardware element. |
| |
| ASL Compiler Version X2015: |
| |
| Integrated changes to allow the compiler to be generated on |
| multiple platforms. |
| |
| Linux makefile added to generate the compiler on Linux |
| |
| Source Code: |
| |
| All platform-specific headers have been moved to their own |
| subdirectory, Include/Platform. |
| |
| New source file added, Interpreter/ammutex.c |
| |
| New header file, Include/acstruct.h |
| |
| Documentation: |
| |
| The programmer reference has been updated for the following new |
| interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree |
| |
| ------------------------------------------ |
| Summary of changes for this label: 02_08_01 |
| |
| Core ACPI CA Subsystem: Fixed a problem where an error was |
| incorrectly returned if the return resource buffer was larger than |
| the actual data (in the resource interfaces). |
| |
| References to named objects within packages are resolved to the |
| |
| full pathname string before packages are returned directly (via |
| the AcpiEvaluateObject interface) or indirectly via the resource |
| interfaces. |
| |
| Linux OS Services Layer (OSL): |
| |
| Improved /proc battery interface. |
| |
| |
| Added C-state debugging output and other miscellaneous fixes. |
| |
| ASL Compiler Version X2014: |
| |
| All defined method arguments can now be used as local variables, |
| including the ones that are not actually passed in as parameters. |
| The compiler tracks initialization of the arguments and issues an |
| exception if they are used without prior assignment (just like |
| locals). |
| |
| The -o option now specifies a filename prefix that is used for all |
| output files, including the AML output file. Otherwise, the |
| default behavior is as follows: 1) the AML goes to the file |
| specified in the DSDT. 2) all other output files use the input |
| source filename as the base. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 01_25_01 |
| |
| Core ACPI CA Subsystem: Restructured the implementation of object |
| store support within the interpreter. This includes support for |
| the Store operator as well as any ASL operators that include a |
| target operand. |
| |
| Partially implemented support for Implicit Result-to-Target |
| conversion. This is when a result object is converted on the fly |
| to the type of an existing target object. Completion of this |
| support is pending further analysis of the ACPI specification |
| concerning this matter. |
| |
| CPU-specific code has been removed from the subsystem (hardware |
| directory). |
| |
| New Power Management Timer functions added |
| |
| Linux OS Services Layer (OSL): Moved system state transition code |
| to the core, fixed it, and modified Linux OSL accordingly. |
| |
| Fixed C2 and C3 latency calculations. |
| |
| |
| We no longer use the compilation date for the version message on |
| initialization, but retrieve the version from AcpiGetSystemInfo(). |
| |
| Incorporated for fix Sony VAIO machines. |
| |
| Documentation: The Programmer Reference has been updated and |
| reformatted. |
| |
| |
| ASL Compiler: Version X2013: Fixed a problem where the line |
| numbering and error reporting could get out of sync in the |
| presence of multiple include files. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 01_15_01 |
| |
| Core ACPI CA Subsystem: |
| |
| Implemented support for type conversions in the execution of the |
| ASL Concatenate operator (The second operand is converted to |
| match the type of the first operand before concatenation.) |
| |
| Support for implicit source operand conversion is partially |
| implemented. The ASL source operand types Integer, Buffer, and |
| String are freely interchangeable for most ASL operators and are |
| converted by the interpreter on the fly as required. Implicit |
| Target operand conversion (where the result is converted to the |
| target type before storing) is not yet implemented. |
| |
| Support for 32-bit and 64-bit BCD integers is implemented. |
| |
| Problem fixed where a field read on an aligned field could cause a |
| read past the end of the field. |
| |
| New exception, AE_AML_NO_RETURN_VALUE, is returned when a method |
| does not return a value, but the caller expects one. (The ASL |
| compiler flags this as a warning.) |
| |
| ASL Compiler: |
| |
| Version X2011: |
| 1. Static typechecking of all operands is implemented. This |
| prevents the use of invalid objects (such as using a Package where |
| an Integer is required) at compile time instead of at interpreter |
| run-time. |
| 2. The ASL source line is printed with ALL errors and warnings. |
| 3. Bug fix for source EOF without final linefeed. |
| 4. Debug option is split into a parse trace and a namespace trace. |
| 5. Namespace output option (-n) includes initial values for |
| integers and strings. |
| 6. Parse-only option added for quick syntax checking. |
| 7. Compiler checks for duplicate ACPI name declarations |
| |
| Version X2012: |
| 1. Relaxed typechecking to allow interchangeability between |
| strings, integers, and buffers. These types are now converted by |
| the interpreter at runtime. |
| 2. Compiler reports time taken by each internal subsystem in the |
| debug output file. |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 12_14_00 |
| |
| ASL Compiler: |
| |
| This is the first official release of the compiler. Since the |
| compiler requires elements of the Core Subsystem, this label |
| synchronizes everything. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 12_08_00 |
| |
| |
| Fixed a problem where named references within the ASL definition |
| of both OperationRegions and CreateXXXFields did not work |
| properly. The symptom was an AE_AML_OPERAND_TYPE during |
| initialization of the region/field. This is similar (but not |
| related internally) to the problem that was fixed in the last |
| label. |
| |
| Implemented both 32-bit and 64-bit support for the BCD ASL |
| functions ToBCD and FromBCD. |
| |
| Updated all legal headers to include "2000" in the copyright |
| years. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 12_01_00 |
| |
| Fixed a problem where method invocations within the ASL definition |
| of both OperationRegions and CreateXXXFields did not work |
| properly. The symptom was an AE_AML_OPERAND_TYPE during |
| initialization of the region/field: |
| |
| nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments |
| [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) |
| (0x3005) |
| |
| Fixed a problem where operators with more than one nested |
| subexpression would fail. The symptoms were varied, by mostly |
| AE_AML_OPERAND_TYPE errors. This was actually a rather serious |
| problem that has gone unnoticed until now. |
| |
| Subtract (Add (1,2), Multiply (3,4)) |
| |
| Fixed a problem where AcpiGetHandle didn't quite get fixed in the |
| previous build (The prefix part of a relative path was handled |
| incorrectly). |
| |
| Fixed a problem where Operation Region initialization failed if |
| the operation region name was a "namepath" instead of a simple |
| "nameseg". Symptom was an AE_NO_OPERAND error. |
| |
| Fixed a problem where an assignment to a local variable via the |
| indirect RefOf mechanism only worked for the first such |
| assignment. Subsequent assignments were ignored. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 11_15_00 |
| |
| ACPI 2.0 table support with backwards support for ACPI 1.0 and the |
| 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, |
| the AML interpreter does NOT have support for the new 2.0 ASL |
| grammar terms at this time. |
| |
| All ACPI hardware access is via the GAS structures in the ACPI 2.0 |
| FADT. |
| |
| All physical memory addresses across all platforms are now 64 bits |
| wide. Logical address width remains dependent on the platform |
| (i.e., "void *"). |
| |
| AcpiOsMapMemory interface changed to a 64-bit physical address. |
| |
| The AML interpreter integer size is now 64 bits, as per the ACPI |
| 2.0 specification. |
| |
| For backwards compatibility with ACPI 1.0, ACPI tables with a |
| revision number less than 2 use 32-bit integers only. |
| |
| Fixed a problem where the evaluation of OpRegion operands did not |
| always resolve them to numbers properly. |
| |
| ------------------------------------------ |
| Summary of changes for this label: 10_20_00 |
| |
| Fix for CBN_._STA issue. This fix will allow correct access to |
| CBN_ OpRegions when the _STA returns 0x8. |
| |
| Support to convert ACPI constants (Ones, Zeros, One) to actual |
| values before a package object is returned |
| |
| Fix for method call as predicate to if/while construct causing |
| incorrect if/while behavior |
| |
| Fix for Else block package lengths sometimes calculated wrong (if |
| block > 63 bytes) |
| |
| Fix for Processor object length field, was always zero |
| |
| Table load abort if FACP sanity check fails |
| |
| Fix for problem with Scope(name) if name already exists |
| |
| Warning emitted if a named object referenced cannot be found |
| (resolved) during method execution. |
| |
| |
| |
| |
| |
| ------------------------------------------ |
| Summary of changes for this label: 9_29_00 |
| |
| New table initialization interfaces: AcpiInitializeSubsystem no |
| longer has any parameters AcpiFindRootPointer - Find the RSDP (if |
| necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- |
| >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by |
| AcpiLoadTables |
| |
| Note: These interface changes require changes to all existing OSDs |
| |
| The PCI_Config default address space handler is always installed |
| at the root namespace object. |
| |
| ------------------------------------------- |
| Summary of changes for this label: 09_15_00 |
| |
| The new initialization architecture is implemented. New |
| interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) |
| AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace |
| |
| (Namespace is automatically loaded when a table is loaded) |
| |
| The ACPI_OPERAND_OBJECT has been optimized to shrink its size from |
| 52 bytes to 32 bytes. There is usually one of these for every |
| namespace object, so the memory savings is significant. |
| |
| Implemented just-in-time evaluation of the CreateField operators. |
| |
| Bug fixes for IA-64 support have been integrated. |
| |
| Additional code review comments have been implemented |
| |
| The so-called "third pass parse" has been replaced by a final walk |
| through the namespace to initialize all operation regions (address |
| spaces) and fields that have not yet been initialized during the |
| execution of the various _INI and REG methods. |
| |
| New file - namespace/nsinit.c |
| |
| ------------------------------------------- |
| Summary of changes for this label: 09_01_00 |
| |
| Namespace manager data structures have been reworked to change the |
| primary object from a table to a single object. This has |
| resulted in dynamic memory savings of 3X within the namespace and |
| 2X overall in the ACPI CA subsystem. |
| |
| Fixed problem where the call to AcpiEvFindPciRootBuses was |
| inadvertently left commented out. |
| |
| Reduced the warning count when generating the source with the GCC |
| compiler. |
| |
| Revision numbers added to each module header showing the |
| SourceSafe version of the file. Please refer to this version |
| number when giving us feedback or comments on individual modules. |
| |
| The main object types within the subsystem have been renamed to |
| clarify their purpose: |
| |
| ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT |
| ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT |
| ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE |
| |
| NOTE: no changes to the initialization sequence are included in |
| this label. |
| |
| ------------------------------------------- |
| Summary of changes for this label: 08_23_00 |
| |
| Fixed problem where TerminateControlMethod was being called |
| multiple times per method |
| |
| Fixed debugger problem where single stepping caused a semaphore to |
| be oversignalled |
| |
| Improved performance through additional parse object caching - |
| added ACPI_EXTENDED_OP type |
| |
| ------------------------------------------- |
| Summary of changes for this label: 08_10_00 |
| |
| Parser/Interpreter integration: Eliminated the creation of |
| complete parse trees for ACPI tables and control methods. |
| Instead, parse subtrees are created and then deleted as soon as |
| they are processed (Either entered into the namespace or executed |
| by the interpreter). This reduces the use of dynamic kernel |
| memory significantly. (about 10X) |
| |
| Exception codes broken into classes and renumbered. Be sure to |
| recompile all code that includes acexcep.h. Hopefully we won't |
| have to renumber the codes again now that they are split into |
| classes (environment, programmer, AML code, ACPI table, and |
| internal). |
| |
| Fixed some additional alignment issues in the Resource Manager |
| subcomponent |
| |
| Implemented semaphore tracking in the AcpiExec utility, and fixed |
| several places where mutexes/semaphores were being unlocked |
| without a corresponding lock operation. There are no known |
| semaphore or mutex "leaks" at this time. |
| |
| Fixed the case where an ASL Return operator is used to return an |
| unnamed package. |
| |
| ------------------------------------------- |
| Summary of changes for this label: 07_28_00 |
| |
| Fixed a problem with the way addresses were calculated in |
| AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem |
| manifested itself when a Field was created with WordAccess or |
| DwordAccess, but the field unit defined within the Field was less |
| |
| than a Word or Dword. |
| |
| Fixed a problem in AmlDumpOperands() module's loop to pull |
| operands off of the operand stack to display information. The |
| problem manifested itself as a TLB error on 64-bit systems when |
| accessing an operand stack with two or more operands. |
| |
| Fixed a problem with the PCI configuration space handlers where |
| context was getting confused between accesses. This required a |
| change to the generic address space handler and address space |
| setup definitions. Handlers now get both a global handler context |
| (this is the one passed in by the user when executing |
| AcpiInstallAddressSpaceHandler() and a specific region context |
| that is unique to each region (For example, the _ADR, _SEG and |
| _BBN values associated with a specific region). The generic |
| function definitions have changed to the following: |
| |
| typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, |
| UINT32 Address, UINT32 BitWidth, UINT32 *Value, void |
| *HandlerContext, // This used to be void *Context void |
| *RegionContext); // This is an additional parameter |
| |
| typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE |
| RegionHandle, UINT32 Function, void *HandlerContext, void |
| **RegionContext); // This used to be **ReturnContext |
| |
| ------------------------------------------- |
| Summary of changes for this label: 07_21_00 |
| |
| Major file consolidation and rename. All files within the |
| interpreter have been renamed as well as most header files. This |
| was done to prevent collisions with existing files in the host |
| OSs -- filenames such as "config.h" and "global.h" seem to be |
| quite common. The VC project files have been updated. All |
| makefiles will require modification. |
| |
| The parser/interpreter integration continues in Phase 5 with the |
| implementation of a complete 2-pass parse (the AML is parsed |
| twice) for each table; This avoids the construction of a huge |
| parse tree and therefore reduces the amount of dynamic memory |
| required by the subsystem. Greater use of the parse object cache |
| means that performance is unaffected. |
| |
| Many comments from the two code reviews have been rolled in. |
| |
| The 64-bit alignment support is complete. |
| |
| ------------------------------------------- |
| Summary of changes for this label: 06_30_00 |
| |
| With a nod and a tip of the hat to the technology of yesteryear, |
| we've added support in the source code for 80 column output |
| devices. The code is now mostly constrained to 80 columns or |
| less to support environments and editors that 1) cannot display |
| or print more than 80 characters on a single line, and 2) cannot |
| disable line wrapping. |
| |
| A major restructuring of the namespace data structure has been |
| completed. The result is 1) cleaner and more |
| understandable/maintainable code, and 2) a significant reduction |
| in the dynamic memory requirement for each named ACPI object |
| (almost half). |
| |
| ------------------------------------------- |
| Summary of changes for this label: 06_23_00 |
| |
| Linux support has been added. In order to obtain approval to get |
| the ACPI CA subsystem into the Linux kernel, we've had to make |
| quite a few changes to the base subsystem that will affect all |
| users (all the changes are generic and OS- independent). The |
| effects of these global changes have been somewhat far reaching. |
| Files have been merged and/or renamed and interfaces have been |
| renamed. The major changes are described below. |
| |
| Osd* interfaces renamed to AcpiOs* to eliminate namespace |
| pollution/confusion within our target kernels. All OSD |
| interfaces must be modified to match the new naming convention. |
| |
| Files merged across the subsystem. A number of the smaller source |
| and header files have been merged to reduce the file count and |
| increase the density of the existing files. There are too many |
| to list here. In general, makefiles that call out individual |
| files will require rebuilding. |
| |
| Interpreter files renamed. All interpreter files now have the |
| prefix am* instead of ie* and is*. |
| |
| Header files renamed: The acapi.h file is now acpixf.h. The |
| acpiosd.h file is now acpiosxf.h. We are removing references to |
| the acronym "API" since it is somewhat windowsy. The new name is |
| "external interface" or xface or xf in the filenames.j |
| |
| |
| All manifest constants have been forced to upper case (some were |
| mixed case.) Also, the string "ACPI_" has been prepended to many |
| (not all) of the constants, typedefs, and structs. |
| |
| The globals "DebugLevel" and "DebugLayer" have been renamed |
| "AcpiDbgLevel" and "AcpiDbgLayer" respectively. |
| |
| All other globals within the subsystem are now prefixed with |
| "AcpiGbl_" Internal procedures within the subsystem are now |
| prefixed with "Acpi" (with only a few exceptions). The original |
| two-letter abbreviation for the subcomponent remains after "Acpi" |
| - for example, CmCallocate became AcpiCmCallocate. |
| |
| Added a source code translation/conversion utility. Used to |
| generate the Linux source code, it can be modified to generate |
| other types of source as well. Can also be used to cleanup |
| existing source by removing extraneous spaces and blank lines. |
| Found in tools/acpisrc/* |
| |
| OsdUnMapMemory was renamed to OsdUnmapMemory and then |
| AcpiOsUnmapMemory. (UnMap became Unmap). |
| |
| A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. |
| When set to one, this indicates that the caller wants to use the |
| |
| semaphore as a mutex, not a counting semaphore. ACPI CA uses |
| both types. However, implementers of this call may want to use |
| different OS primitives depending on the type of semaphore |
| requested. For example, some operating systems provide separate |
| |
| "mutex" and "semaphore" interfaces - where the mutex interface is |
| much faster because it doesn't have all the overhead of a full |
| semaphore implementation. |
| |
| Fixed a deadlock problem where a method that accesses the PCI |
| address space can block forever if it is the first access to the |
| space. |
| |
| ------------------------------------------- |
| Summary of changes for this label: 06_02_00 |
| |
| Support for environments that cannot handle unaligned data |
| accesses (e.g. firmware and OS environments devoid of alignment |
| handler technology namely SAL/EFI and the IA-64 Linux kernel) has |
| been added (via configurable macros) in these three areas: - |
| Transfer of data from the raw AML byte stream is done via byte |
| moves instead of word/dword/qword moves. - External objects are |
| aligned within the user buffer, including package elements (sub- |
| objects). - Conversion of name strings to UINT32 Acpi Names is now |
| done byte-wise. |
| |
| The Store operator was modified to mimic Microsoft's |
| implementation when storing to a Buffer Field. |
| |
| Added a check of the BM_STS bit before entering C3. |
| |
| The methods subdirectory has been obsoleted and removed. A new |
| file, cmeval.c subsumes the functionality. |
| |
| A 16-bit (DOS) version of AcpiExec has been developed. The |
| makefile is under the acpiexec directory. |