Up to [cvs.NetBSD.org] / src / sys / external / bsd / acpica / dist / common
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: intel, MAIN
Import acpica-20240827 (previous was acpica-20230628) ---------------------------------------- 27 August 2024. Summary of changes for version 20240827: Major changes: Fix the PHAT table working: ensure that the PHAT firmware health record offset works correctly, fix various sub-table offsets, prevent segmentation faults when encountering invalid device paths. Contributed by: Armin Wolf <W_Armin@gmx.de> Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin <99danilt@gmail.com> Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone (Fedora) <ahs3@ahs3.net> Add support for QWordPCC and DWordPCC by Jose Marinho (ARM) Fix the integer to hex string conversions by Armin Wolf Detecting FACS in reduced HW mode and allowing setting waking vector thereby waking up from S3 state Fixing issues with crossing page boundaries when mapping operation regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD) Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables Fix multiple issues with table parsing, compilation and disassembly by Myra DeMere (Google) Allow for more flexibility in _DSM usage. ---------------------------------------- 22 March 2024. Summary of changes for version 20240322: Major changes: Update all the license header year from 2023 to 2024. Fix table argument ordering to work properly with iasl. Get rid of the annoying repeated warning types in MSVC and Windows. Fix a test in ASLTS with edge case failure. Fix a couple of issues with how GPEs are counted and enabled. Add new tables for various architectures/OS, mainly RISC-V and also update many more. Add an option to either make the output deterministic or non-deterministic. Remove redundant checks, duplicated code and fix spellings in various files. fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc.
Import acpica-20230628 (last was 20221020) ---------------------------------------- 28 June 2023. Summary of changes for version 20230628: 0) Global changes: Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime arguments). Reported by: Abhishek Mainkar abmainkar@nvidia.com. Added a define for size of acpi_srat_generic_affinity DeviceHandle. Replaced a magic number with a define. The Linux kernel code will utilize this. Reported by Dave Jiang dave.jiang@intel.com. Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 1) ACPICA kernel-resident subsystem: Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com. Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com. 1) ACPICA kernel-resident subsystem: Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer to an ephemeral local variable which technically is a dangling pointer and the compiler is correct. However, since we never indirect the pointer, this is a safe operation and we can suppress the warning. Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly so we must include it explicitly or we won't have the type definition for uintptr_t. 2) iASL Compiler/Disassembler and ACPICA tools:. IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table is updated with new nodes. Add compile and dump functionality for these new structures. AcpiExec: Added a new command, ?interrupt?. The Interrupt command simulates an interrupt with a IntID (GSIV) equal to the first argument of the call/invocation. The acpiexec code simulates the behavior by OSPM: execute the _EVT method of the GED device associated with that IntID. Submitted by: Jose Marinho jose.marinho@arm.com. AcpiExec: Detect GED device and keep track of _EVT. The GED device is described by a _HID of ACPI0013. This code traverses the namespace identifying all GED devices. For each GED device in the namespace we record the Interrupt object and the _EVT method. This information is used when an interrupt is simulated via the ?interrupt? command. Submitted by: Jose Marinho jose.marinho@arm.com. ---------------------------------------- 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.
Import acpica 2022-10-20 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.
Import acpica-2022-03-31 ---------------------------------------- 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.
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.
Sync with HEAD.
Import acpica-20210604 ---------------------------------------- 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.
Sync with HEAD.
Sync with HEAD.
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.
Sync w/ HEAD.
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.
Merge changes from current as of 20200406
---------------------------------------- 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.)
Sync with HEAD
---------------------------------------- 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 interpeter. 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)
Sync with HEAD, resolve some conflicts
file dmtbinfo1.c was added on branch pgoyette-compat on 2018-04-16 02:00:02 +0000
---------------------------------------- 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.
Initial revision