diff options
Diffstat (limited to 'sys/contrib/dev/acpica')
360 files changed, 10117 insertions, 2809 deletions
diff --git a/sys/contrib/dev/acpica/acpica_prep.sh b/sys/contrib/dev/acpica/acpica_prep.sh index 1a53d8c44ae1..034541cc69d7 100755 --- a/sys/contrib/dev/acpica/acpica_prep.sh +++ b/sys/contrib/dev/acpica/acpica_prep.sh @@ -21,10 +21,10 @@ stripdirs="generate libraries parsers preprocessor tests tools" stripfiles="Makefile README aslcompiler.y accygwin.h acdragonfly.h \ acdragonflyex.h acefi.h acefiex.h achaiku.h acintel.h aclinux.h \ aclinuxex.h acmacosx.h acmsvc.h acmsvcex.h acnetbsd.h acos2.h \ - acqnx.h acwin.h acwin64.h acwinex.h new_table.txt osbsdtbl.c \ - osefitbl.c osefixf.c osfreebsdtbl.c oslinuxtbl.c osunixdir.c \ - osunixmap.c oswindir.c oswintbl.c oswinxf.c readme.txt utclib.c \ - utprint.c" + acqnx.h acwin.h acwin64.h acwinex.h aczephyr.h new_table.txt \ + osbsdtbl.c osefitbl.c osefixf.c osfreebsdtbl.c oslinuxtbl.c \ + osunixdir.c osunixmap.c oswindir.c oswintbl.c oswinxf.c \ + oszephyr.c readme.txt utclib.c utprint.c" # include files to canonify src_headers="acapps.h acbuffer.h acclib.h accommon.h acconfig.h \ diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt index cf3c21898c51..4e3cf4f2f41c 100644 --- a/sys/contrib/dev/acpica/changes.txt +++ b/sys/contrib/dev/acpica/changes.txt @@ -1,4 +1,252 @@ ---------------------------------------- +7 August 2025. Summary of changes for version 20250807: + +Major changes: + +Added option to skip the global lock for SMM - Huacai Chen + +Fixed non-NUL terminated string implementations - Ahmed Salem + +Fixed CCEL and CDAT templates - Ahmed Salem + +Fixed a major Linux kernel bug (UAF) that was triggered by unequal number of method parameters (definition) vs arguments (invocation) in different places - Peter Williams, Hans de Goede, Rafael Wysocki + +Define distinct D3 states (D3Hot and D3Cold) that help clarify the device behavior support - Aymeric Wibo + +A few cleanups, improvements to existing table supports, small fixes, spelling corrections etc. + + +---------------------------------------- +4 April 2025. Summary of changes for version 20250404: + +Major changes: + +Update all the copyright continuation year to 2025 in the license header of all files + +Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony Luck & V L Sunil) + +Add a license file to the project which is a great improvement (Dionna Glaze) + +Update DMAR and TPM2 tables to support their latest versions (Alexey Neyman and Stuart Yoder) + +A few fixes including local cache allocation, FFixedHW Region, attribute packing, string vs. non-string char array, vsnprintf()etc. along with some comments, spelling errors and code alignment (multiple awesome contributors) + + +---------------------------------------- +12 December 2024. Summary of changes for version 20241212: + +Major changes: + +Fix 2 critical CVE addressing memory leaks - Seunghun Han + +EINJ V2 updates - Zaid Alali (Ampere Computing) + +CDAT updates - Ira Weiny (Intel Corporation) + +Fix mutex handling, do not release ones that were never acquired - Daniil Tatianin + +Experiment with new tag name format Ryyyy_mm_dd to solve chronological sorting problems + + +---------------------------------------- +27 September 2024. Summary of changes for version 20240927: + +Major changes: + +Fix the acpixf.h file which caused issues for the last release (before this) 20240827 + +Fix the pointer offset for the SLIC table + +Verify the local environment and GitHub commits are all in sync which was a problem with the second from last release (before this)20240322 (aka 20240323 - date issue) + + + +---------------------------------------- +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. + + +---------------------------------------- +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. + + +---------------------------------------- +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: @@ -6940,7 +7188,6 @@ features become unavailable: 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 diff --git a/sys/contrib/dev/acpica/common/acfileio.c b/sys/contrib/dev/acpica/common/acfileio.c index ca1e9199f3e3..19274cb4bdd3 100644 --- a/sys/contrib/dev/acpica/common/acfileio.c +++ b/sys/contrib/dev/acpica/common/acfileio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -387,16 +387,36 @@ AcGetOneTableFromFile ( ACPI_TABLE_HEADER TableHeader; ACPI_TABLE_HEADER *Table; INT32 Count; - long TableOffset; - + UINT32 TableLength; + UINT32 HeaderLength; + long TableOffset = 0; *ReturnTable = NULL; /* Get the table header to examine signature and length */ + /* + * Special handling for the CDAT table (both the Length field + * and the Checksum field are not in the standard positions). + * (The table header is non-standard). + */ + if (AcpiGbl_CDAT) + { + HeaderLength = sizeof (ACPI_TABLE_CDAT); + } + else + { + HeaderLength = sizeof (ACPI_TABLE_HEADER); + } + + Status = AcValidateTableHeader (File, TableOffset); + if (ACPI_FAILURE (Status)) + { + return (Status); + } TableOffset = ftell (File); - Count = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), File); - if (Count != sizeof (ACPI_TABLE_HEADER)) + Count = fread (&TableHeader, 1, HeaderLength, File); + if (Count != (INT32) HeaderLength) { return (AE_CTRL_TERMINATE); } @@ -405,12 +425,6 @@ AcGetOneTableFromFile ( { /* Validate the table signature/header (limited ASCII chars) */ - Status = AcValidateTableHeader (File, TableOffset); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - /* * Table must be an AML table (DSDT/SSDT). * Used for iASL -e option only. @@ -425,9 +439,22 @@ AcGetOneTableFromFile ( } } + /* + * Special handling for the CDAT table (both the Length field + * and the Checksum field are not in the standard positions). + */ + if (AcpiGbl_CDAT) + { + TableLength = ACPI_CAST_PTR (ACPI_TABLE_CDAT, &TableHeader)->Length; + } + else + { + TableLength = TableHeader.Length; + } + /* Allocate a buffer for the entire table */ - Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length); + Table = AcpiOsAllocate ((ACPI_SIZE) TableLength); if (!Table) { return (AE_NO_MEMORY); @@ -436,22 +463,31 @@ AcGetOneTableFromFile ( /* Read the entire ACPI table, including header */ fseek (File, TableOffset, SEEK_SET); - - Count = fread (Table, 1, TableHeader.Length, File); + Count = fread (Table, 1, TableLength, File); /* * Checks for data table headers happen later in the execution. Only verify * for Aml tables at this point in the code. */ - if (GetOnlyAmlTables && Count != (INT32) TableHeader.Length) + if (GetOnlyAmlTables && Count != (INT32) TableLength) { Status = AE_ERROR; goto ErrorExit; } - /* Validate the checksum (just issue a warning) */ + /* + * Validate the checksum (just issue a warning if incorrect). + * Note: CDAT is special cased here because the table does + * not have the checksum field in the standard position. + */ + if (AcpiGbl_CDAT) + { + Status = AcpiUtVerifyCdatChecksum ((ACPI_TABLE_CDAT *) Table, TableLength); + } else + { + Status = AcpiUtVerifyChecksum (Table, TableLength); + } - Status = AcpiTbVerifyChecksum (Table, TableHeader.Length); if (ACPI_FAILURE (Status)) { Status = AcCheckTextModeCorruption (Table); @@ -540,6 +576,8 @@ AcValidateTableHeader ( long TableOffset) { ACPI_TABLE_HEADER TableHeader; + ACPI_TABLE_CDAT *CdatTableHeader = ACPI_CAST_PTR (ACPI_TABLE_CDAT, &TableHeader); + UINT32 HeaderLength; ACPI_SIZE Actual; long OriginalOffset; UINT32 FileSize; @@ -548,6 +586,16 @@ AcValidateTableHeader ( ACPI_FUNCTION_TRACE (AcValidateTableHeader); + /* Determine the type of table header */ + + if (AcpiGbl_CDAT) + { + HeaderLength = sizeof (ACPI_TABLE_CDAT); + } + else + { + HeaderLength = sizeof (ACPI_TABLE_HEADER); + } /* Read a potential table header */ @@ -556,41 +604,76 @@ AcValidateTableHeader ( { fprintf (stderr, "SEEK error\n"); } - Actual = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), File); + Actual = fread (&TableHeader, 1, HeaderLength, File); if (fseek (File, OriginalOffset, SEEK_SET)) { fprintf (stderr, "SEEK error\n"); } - if (Actual < sizeof (ACPI_TABLE_HEADER)) + if (Actual < HeaderLength) { fprintf (stderr, "Could not read entire table header: Actual %u, Requested %u\n", - (UINT32) Actual, (UINT32) sizeof (ACPI_TABLE_HEADER)); + (UINT32) Actual, HeaderLength); return (AE_ERROR); } /* Validate the signature (limited ASCII chars) */ - if (!AcpiUtValidNameseg (TableHeader.Signature)) + if (!AcpiGbl_CDAT && !AcpiUtValidNameseg (TableHeader.Signature)) { + /* + * The "-ds cdat" option was not used, and the signature is not valid. + * + * For CDAT we are assuming that there should be at least one non-ASCII + * byte in the (normally) 4-character Signature field (at least the + * high-order byte should be zero). Otherwise, this is OK. + */ + fprintf (stderr, + "\nTable appears to be a CDAT table, which has no signature.\n" + "If this is in fact a CDAT table, use the -ds option on the\n" + "command line to specify the table type (signature):\n" + "\"iasl -d -ds CDAT <file>\" or \"iasl -ds CDAT -T CDAT\"\n\n"); + return (AE_BAD_SIGNATURE); } /* Validate table length against bytes remaining in the file */ FileSize = CmGetFileSize (File); - if (TableHeader.Length > (UINT32) (FileSize - TableOffset)) + if (!AcpiGbl_CDAT) + { + /* Standard ACPI table header */ + + if (TableHeader.Length > (UINT32) (FileSize - TableOffset)) + { + fprintf (stderr, "Table [%4.4s] is too long for file - " + "needs: 0x%.2X, remaining in file: 0x%.2X\n", + TableHeader.Signature, TableHeader.Length, + (UINT32) (FileSize - TableOffset)); + return (AE_BAD_HEADER); + } + } + else if (CdatTableHeader->Length > (UINT32) (FileSize - TableOffset)) { - fprintf (stderr, "Table [%4.4s] is too long for file - " + /* Special header for CDAT table */ + + fprintf (stderr, "Table [CDAT] is too long for file - " "needs: 0x%.2X, remaining in file: 0x%.2X\n", - TableHeader.Signature, TableHeader.Length, + CdatTableHeader->Length, (UINT32) (FileSize - TableOffset)); return (AE_BAD_HEADER); } + /* For CDAT table, there are no ASCII fields in the header, we are done */ + + if (AcpiGbl_CDAT) + { + return (AE_OK); + } + /* - * These fields must be ASCII: OemId, OemTableId, AslCompilerId. + * These standard fields must be ASCII: OemId, OemTableId, AslCompilerId. * We allow a NULL terminator in OemId and OemTableId. */ for (i = 0; i < ACPI_NAMESEG_SIZE; i++) diff --git a/sys/contrib/dev/acpica/common/acgetline.c b/sys/contrib/dev/acpica/common/acgetline.c index 7ad10510168e..2793f26077bb 100644 --- a/sys/contrib/dev/acpica/common/acgetline.c +++ b/sys/contrib/dev/acpica/common/acgetline.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/adfile.c b/sys/contrib/dev/acpica/common/adfile.c index a4639e30e4ac..f87b329d918d 100644 --- a/sys/contrib/dev/acpica/common/adfile.c +++ b/sys/contrib/dev/acpica/common/adfile.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c index c45b609d4f3f..83125098cbd1 100644 --- a/sys/contrib/dev/acpica/common/adisasm.c +++ b/sys/contrib/dev/acpica/common/adisasm.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -458,7 +458,7 @@ AdDisassembleOneTable ( */ if (AcpiGbl_CaptureComments) { - strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE); + memcpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE); } #endif @@ -476,17 +476,17 @@ AdDisassembleOneTable ( /* This is a "Data Table" (non-AML table) */ AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", - Table->Signature); + AcpiGbl_CDAT ? (char *) AcpiGbl_CDAT : Table->Signature); AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] " "FieldName : FieldValue (in hex)\n */\n\n"); AcpiDmDumpDataTable (Table); - fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n", - Table->Signature); + fprintf (stdout, "Acpi Data Table [%4.4s] decoded\n", + AcpiGbl_CDAT ? (char *) AcpiGbl_CDAT : Table->Signature); if (File) { - fprintf (stderr, "Formatted output: %s - %u bytes\n", + fprintf (stdout, "Formatted output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } @@ -584,16 +584,16 @@ AdDisassembleOneTable ( AcpiDmDumpDataTable (Table); - fprintf (stderr, "Disassembly completed\n"); + fprintf (stdout, "Disassembly completed\n"); if (File) { - fprintf (stderr, "ASL Output: %s - %u bytes\n", + fprintf (stdout, "ASL Output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } if (AslGbl_MapfileFlag) { - fprintf (stderr, "%14s %s - %u bytes\n", + fprintf (stdout, "%14s %s - %u bytes\n", AslGbl_FileDescs[ASL_FILE_MAP_OUTPUT].ShortDescription, AslGbl_Files[ASL_FILE_MAP_OUTPUT].Filename, FlGetFileSize (ASL_FILE_MAP_OUTPUT)); @@ -630,7 +630,7 @@ AdReparseOneTable ( ACPI_COMMENT_ADDR_NODE *AddrListHead; - fprintf (stderr, + fprintf (stdout, "\nFound %u external control methods, " "reparsing with new information\n", AcpiDmGetUnresolvedExternalMethodCount ()); @@ -789,6 +789,7 @@ AdDoExternalFileList ( AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + AcpiGbl_ParseOpRoot = NULL; ExternalListHead = ExternalListHead->Next; } diff --git a/sys/contrib/dev/acpica/common/adwalk.c b/sys/contrib/dev/acpica/common/adwalk.c index 44b3485a21ba..b7484315fe51 100644 --- a/sys/contrib/dev/acpica/common/adwalk.c +++ b/sys/contrib/dev/acpica/common/adwalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/ahids.c b/sys/contrib/dev/acpica/common/ahids.c index 7c1aabdf8b89..07b69b45c641 100644 --- a/sys/contrib/dev/acpica/common/ahids.c +++ b/sys/contrib/dev/acpica/common/ahids.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/ahpredef.c b/sys/contrib/dev/acpica/common/ahpredef.c index afad65543194..e6c3f2758760 100644 --- a/sys/contrib/dev/acpica/common/ahpredef.c +++ b/sys/contrib/dev/acpica/common/ahpredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -234,6 +234,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] = AH_PREDEF ("_DMA", "Direct Memory Access", "Returns device current resources for DMA transactions, and resource field"), AH_PREDEF ("_DOD", "Display Output Devices", "Enumerate all devices attached to the display adapter"), AH_PREDEF ("_DOS", "Disable Output Switching", "Sets the display output switching mode"), + AH_PREDEF ("_DSC", "Deepest State for Configuration", "Returns the deepest D-state of the device to the OSPM"), AH_PREDEF ("_DPL", "Device Selection Polarity", "Polarity of Device Selection signal, Resource Descriptor field"), AH_PREDEF ("_DRS", "Drive Strength", "Drive Strength setting for GPIO connection, Resource Descriptor field"), AH_PREDEF ("_DSD", "Device-Specific Data", "Returns a list of device property information"), diff --git a/sys/contrib/dev/acpica/common/ahtable.c b/sys/contrib/dev/acpica/common/ahtable.c index 227fee2b5132..587bf61016f0 100644 --- a/sys/contrib/dev/acpica/common/ahtable.c +++ b/sys/contrib/dev/acpica/common/ahtable.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -202,10 +202,13 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_AEST, "Arm Error Source Table"}, {ACPI_SIG_AGDI, "Arm Generic Diagnostic Dump and Reset Device Interface Table"}, {ACPI_SIG_ASF, "Alert Standard Format Table"}, + {ACPI_SIG_ASPT, "AMD Secure Processor Table"}, {ACPI_SIG_BDAT, "BIOS Data ACPI Table"}, {ACPI_SIG_BERT, "Boot Error Record Table"}, {ACPI_SIG_BGRT, "Boot Graphics Resource Table"}, {ACPI_SIG_BOOT, "Simple Boot Flag Table"}, + {ACPI_SIG_CCEL, "CC-Event Log Table"}, + {ACPI_SIG_CDAT, "Coherent Device Attribute Table"}, {ACPI_SIG_CEDT, "CXL Early Discovery Table"}, {ACPI_SIG_CPEP, "Corrected Platform Error Polling Table"}, {ACPI_SIG_CSRT, "Core System Resource Table"}, @@ -216,6 +219,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"}, {ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"}, {ACPI_SIG_EINJ, "Error Injection Table"}, + {ACPI_SIG_ERDT, "Enhanced Resource Director Technology Table"}, {ACPI_SIG_ERST, "Error Record Serialization Table"}, {ACPI_SIG_FACS, "Firmware ACPI Control Structure"}, {ACPI_SIG_FADT, "Fixed ACPI Description Table (FADT)"}, @@ -230,7 +234,9 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"}, {ACPI_SIG_MCFG, "Memory Mapped Configuration Table"}, {ACPI_SIG_MCHI, "Management Controller Host Interface Table"}, + {ACPI_SIG_MPAM, "Memory System Resource Partitioning and Monitoring Table"}, {ACPI_SIG_MPST, "Memory Power State Table"}, + {ACPI_SIG_MRRM, "Memory Range and Region Mapping Table"}, {ACPI_SIG_MSCT, "Maximum System Characteristics Table"}, {ACPI_SIG_MSDM, "Microsoft Data Management Table"}, {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"}, @@ -242,6 +248,8 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_PPTT, "Processor Properties Topology Table"}, {ACPI_SIG_PRMT, "Platform Runtime Mechanism Table"}, {ACPI_SIG_RASF, "RAS Features Table"}, + {ACPI_SIG_RAS2, "RAS2 Features Table"}, + {ACPI_SIG_RHCT, "RISC-V Hart Capabilities Table"}, {ACPI_SIG_RGRT, "Regulatory Graphics Resource Table"}, {ACPI_RSDP_NAME,"Root System Description Pointer"}, {ACPI_SIG_RSDT, "Root System Description Table"}, @@ -257,6 +265,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"}, {ACPI_SIG_STAO, "Status Override Table"}, {ACPI_SIG_SVKL, "Storage Volume Key Location Table"}, + {ACPI_SIG_SWFT, "SoundWire File Table"}, {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"}, {ACPI_SIG_TDEL, "TD-Event Log Table"}, {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"}, diff --git a/sys/contrib/dev/acpica/common/ahuuids.c b/sys/contrib/dev/acpica/common/ahuuids.c index 7378a8555bb0..f7056fdf9363 100644 --- a/sys/contrib/dev/acpica/common/ahuuids.c +++ b/sys/contrib/dev/acpica/common/ahuuids.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -209,6 +209,9 @@ const AH_UUID Gbl_AcpiUuids[] = {"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION}, {"ARM Coresight Graph", UUID_CORESIGHT_GRAPH}, {"USB4 Capabilities", UUID_USB4_CAPABILITIES}, + {"First Function ID for _DSM", UUID_1ST_FUNCTION_ID}, + {"Second Function ID for _DSM", UUID_2ND_FUNCTION_ID}, + {NULL, NULL} }; diff --git a/sys/contrib/dev/acpica/common/cmfsize.c b/sys/contrib/dev/acpica/common/cmfsize.c index 2a0b907bae2f..c6cedf9a0866 100644 --- a/sys/contrib/dev/acpica/common/cmfsize.c +++ b/sys/contrib/dev/acpica/common/cmfsize.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/dmextern.c b/sys/contrib/dev/acpica/common/dmextern.c index b9293282a24e..d2eeffdfe02e 100644 --- a/sys/contrib/dev/acpica/common/dmextern.c +++ b/sys/contrib/dev/acpica/common/dmextern.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -1493,7 +1493,6 @@ AcpiDmMarkExternalConflict ( ACPI_EXTERNAL_LIST *ExternalList = AcpiGbl_ExternalList; char *ExternalPath; char *InternalPath; - char *Temp; ACPI_STATUS Status; @@ -1526,13 +1525,6 @@ AcpiDmMarkExternalConflict ( while (ExternalList) { - Temp = ExternalList->InternalPath; - if ((*ExternalList->InternalPath == AML_ROOT_PREFIX) && - (ExternalList->InternalPath[1])) - { - Temp++; - } - if (!strcmp (ExternalList->InternalPath, InternalPath)) { ExternalList->Flags |= ACPI_EXT_CONFLICTING_DECLARATION; diff --git a/sys/contrib/dev/acpica/common/dmrestag.c b/sys/contrib/dev/acpica/common/dmrestag.c index e26f3d092a3c..8c7cc4b9ef7c 100644 --- a/sys/contrib/dev/acpica/common/dmrestag.c +++ b/sys/contrib/dev/acpica/common/dmrestag.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -480,6 +480,14 @@ static const ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] = {0, NULL} }; +/* Subtype tables for ClockInput descriptor */ + +static const ACPI_RESOURCE_TAG AcpiDmClockInputTags[] = +{ + {( 6 * 8), ACPI_RESTAG_FQD}, + {( 8 * 8), ACPI_RESTAG_FQN}, + {0, NULL} +}; /* * Dispatch table used to obtain the correct tag table for a descriptor. @@ -531,6 +539,7 @@ static const ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags[] = NULL, /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */ AcpiDmPinGroupFunctionTags, /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */ AcpiDmPinConfigTags, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG - Same as PinConfig */ + AcpiDmClockInputTags, /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */ }; /* GPIO Subtypes */ @@ -885,7 +894,7 @@ static void AcpiDmUpdateResourceName ( ACPI_NAMESPACE_NODE *ResourceNode) { - char Name[ACPI_NAMESEG_SIZE]; + char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; /* Ignore if a unique name has already been assigned */ diff --git a/sys/contrib/dev/acpica/common/dmswitch.c b/sys/contrib/dev/acpica/common/dmswitch.c index 9cad863b6c03..8d5ca2e016a7 100644 --- a/sys/contrib/dev/acpica/common/dmswitch.c +++ b/sys/contrib/dev/acpica/common/dmswitch.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c index 78c75ab803f8..702f4f7965e4 100644 --- a/sys/contrib/dev/acpica/common/dmtable.c +++ b/sys/contrib/dev/acpica/common/dmtable.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -190,6 +190,8 @@ static const char *AcpiDmAestSubnames[] = "SMMU Error Node", "Vendor-defined Error Node", "GIC Error Node", + "PCIE Error Node", + "PROXY Error Node", "Unknown Subtable Type" /* Reserved */ }; @@ -214,6 +216,7 @@ static const char *AcpiDmAestXfaceNames[] = { "System Register Interface", "Memory Mapped Interface", + "Single Record Memory Mapped Interface", "Unknown Interface Type" /* Reserved */ }; @@ -234,10 +237,30 @@ static const char *AcpiDmAsfSubnames[] = "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmAsptSubnames[] = +{ + "ASPT Global Registers", + "ASPT SEV Mailbox Registers", + "ASPT ACPI Mailbox Registers", + "Unknown Subtable Type" /* Reserved */ +}; + +static const char *AcpiDmCdatSubnames[] = +{ + "Device Scoped Memory Affinity Structure (DSMAS)", + "Device scoped Latency and Bandwidth Information Structure (DSLBIS)", + "Device Scoped Memory Side Cache Information Structure (DSMSCIS)", + "Device Scoped Initiator Structure (DSIS)", + "Device Scoped EFI Memory Type Structure (DSEMTS)", + "Switch Scoped Latency and Bandwidth Information Structure (SSLBIS)", + "Unknown Subtable Type" /* Reserved */ +}; + static const char *AcpiDmCedtSubnames[] = { "CXL Host Bridge Structure", "CXL Fixed Memory Window Structure", + "CXL XOR Interleave Math Structure", "Unknown Subtable Type" /* Reserved */ }; @@ -249,6 +272,7 @@ static const char *AcpiDmDmarSubnames[] = "Remapping Hardware Static Affinity", "ACPI Namespace Device Declaration", "SoC Integrated Address Translation Cache", + "SoC Integrated Device Property", "Unknown Subtable Type" /* Reserved */ }; @@ -289,6 +313,22 @@ static const char *AcpiDmEinjInstructions[] = "Unknown Instruction" }; +static const char *AcpiDmErdtSubnames[] = +{ + "RMDD", + "CACD", + "DACD", + "CMRC", + "MMRC", + "MARC", + "CARC", + "CMRD", + "IBRD", + "IBAD", + "CARD", + "RESERVED" +}; + static const char *AcpiDmErstActions[] = { "Begin Write Operation", @@ -403,10 +443,32 @@ static const char *AcpiDmMadtSubnames[] = "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */ "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */ "Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */ + "CPU Core Interrupt Controller", /* ACPI_MADT_TYPE_CORE_PIC */ + "Legacy I/O Interrupt Controller", /* ACPI_MADT_TYPE_LIO_PIC */ + "HT Interrupt Controller", /* ACPI_MADT_TYPE_HT_PIC */ + "Extend I/O Interrupt Controller", /* ACPI_MADT_TYPE_EIO_PIC */ + "MSI Interrupt Controller", /* ACPI_MADT_TYPE_MSI_PIC */ + "Bridge I/O Interrupt Controller", /* ACPI_MADT_TYPE_BIO_PIC */ + "LPC Interrupt Controller", /* ACPI_MADT_TYPE_LPC_PIC */ + "RISC-V Interrupt Controller", /* ACPI_MADT_TYPE_RINTC */ + "RISC-V Incoming MSI Controller", /* ACPI_MADT_TYPE_IMSIC */ + "RISC-V APLIC Controller", /* ACPI_MADT_TYPE_APLIC */ + "RISC-V PLIC Controller", /* ACPI_MADT_TYPE_PLIC */ "Unknown Subtable Type", /* Reserved */ "Types 80-FF are used for OEM data" /* Reserved for OEM data */ }; +static const char *AcpiDmMpamSubnames[] = +{ + "Processor cache", /* ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE */ + "Memory", /* ACPI_MPAM_LOCATION_TYPE_MEMORY */ + "SMMU", /* ACPI_MPAM_LOCATION_TYPE_SMMU */ + "Memory-side cache", /* ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE */ + "ACPI device", /* ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE */ + "Interconnect", /* ACPI_MPAM_LOCATION_TYPE_INTERCONNECT */ + "Unknown" /* ACPI_MPAM_LOCATION_TYPE_UNKNOWN */ +}; + static const char *AcpiDmNfitSubnames[] = { "System Physical Address Range", /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */ @@ -420,70 +482,6 @@ static const char *AcpiDmNfitSubnames[] = "Unknown Subtable Type" /* Reserved */ }; -static const char *AcpiDmNhltLinkTypeNames[] = -{ - "Reserved for HD-Audio", /* ACPI_NHLT_RESERVED_HD_AUDIO */ - "Reserved for DSP", /* ACPI_NHLT_RESERVED_DSP */ - "Type PDM", /* ACPI_NHLT_PDM */ - "Type SSP", /* ACPI_NHLT_SSP */ - "Reserved for SlimBus", /* ACPI_NHLT_RESERVED_SLIMBUS */ - "Reserved for SoundWire", /* ACPI_NHLT_RESERVED_SOUNDWIRE */ - "Unknown Link Type" /* Reserved */ -}; - -static const char *AcpiDmNhltDirectionNames[] = -{ - "Render", /* ACPI_NHLT_DIR_RENDER */ - "Capture", /* ACPI_NHLT_DIR_CAPTURE */ - "Render with Loopback", /* ACPI_NHLT_DIR_RENDER_LOOPBACK */ - "Feedback for Render", /* ACPI_NHLT_DIR_RENDER_FEEDBACK */ - "Unknown Direction" /* Reserved */ -}; - -static const char *AcpiDmNhltMicTypeNames[] = -{ - "Omnidirectional", /* ACPI_NHLT_MIC_OMNIDIRECTIONAL */ - "Subcardioid", /* ACPI_NHLT_MIC_SUBCARDIOID */ - "Cardioid", /* ACPI_NHLT_MIC_CARDIOID */ - "SuperCardioid", /* ACPI_NHLT_MIC_SUPER_CARDIOID */ - "HyperCardioid", /* ACPI_NHLT_MIC_HYPER_CARDIOID */ - "8 Shaped", /* ACPI_NHLT_MIC_8_SHAPED */ - "Reserved Mic Type", /* Reserved */ - "Vendor Defined", /* ACPI_NHLT_MIC_VENDOR_DEFINED */ - "Unknown Mic Type" /* ACPI_NHLT_MIC_RESERVED */ -}; - -static const char *AcpiDmNhltMicPositionNames[] = -{ - "Top", /* ACPI_NHLT_MIC_POSITION_TOP */ - "Bottom", /* ACPI_NHLT_MIC_POSITION_BOTTOM */ - "Left", /* ACPI_NHLT_MIC_POSITION_LEFT */ - "Right", /* ACPI_NHLT_MIC_POSITION_RIGHT */ - "Front", /* ACPI_NHLT_MIC_POSITION_FRONT */ - "Back", /* ACPI_NHLT_MIC_POSITION_BACK */ - "Unknown Mic Position" /* 6 and above are reserved */ -}; - -static const char *AcpiDmNhltMicArrayTypeNames[] = -{ - "Unknown Array Type", /* ACPI_NHLT_ARRAY_TYPE_RESERVED */ - "Small Linear 2-element", /* ACPI_NHLT_SMALL_LINEAR_2ELEMENT */ - "Big Linear 2-element", /* ACPI_NHLT_BIG_LINEAR_2ELEMENT */ - "Linear 4-element 1st Geometry", /* ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT */ - "Planar L-shaped 4-element", /* ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT */ - "Linear 4-element 2nd Geometry", /* ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT */ - "Vendor Defined" /* ACPI_NHLT_VENDOR_DEFINED */ -}; - -static const char *AcpiDmNhltConfigTypeNames[] = -{ - "Generic Type", /* ACPI_NHLT_CONFIG_TYPE_GENERIC */ - "Microphone Array", /* ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY */ - "Reserved", /* ACPI_NHLT_CONFIG_TYPE_RESERVED */ - "Render Feedback", /* ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK */ - "Unknown Config Type" /* ACPI_NHLT_CONFIG_TYPE_RESERVED */ -}; - static const char *AcpiDmPcctSubnames[] = { "Generic Communications Subspace", /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */ @@ -541,6 +539,7 @@ static const char *AcpiDmSratSubnames[] = "GIC ITS Affinity", /* Acpi 6.2 */ "Generic Initiator Affinity", /* Acpi 6.3 */ "Generic Port Affinity", /* Acpi 6.4 */ + "RINTC Affinity", /* Acpi 6.6 */ "Unknown Subtable Type" /* Reserved */ }; @@ -631,6 +630,14 @@ static const char *AcpiDmGasAccessWidth[] = "Unknown Width Encoding" }; +static const char *AcpiDmRhctSubnames[] = +{ + "RISC-V ISA string structure", /* ACPI_RHCT_ISA_STRING */ + "RISC-V CMO node structure", /* ACPI_RHCT_CMO_NODE */ + "RISC-V MMU node structure", /* ACPI_RHCT_MMU_NODE */ + "RISC-V Hart Info structure", /* ACPI_RHCT_HART_INFO */ +}; + /******************************************************************************* * @@ -654,10 +661,13 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi, NULL, NULL, TemplateAgdi}, {ACPI_SIG_APMT, NULL, AcpiDmDumpApmt, DtCompileApmt, TemplateApmt}, {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf}, + {ACPI_SIG_ASPT, NULL, AcpiDmDumpAspt, DtCompileAspt, TemplateAspt}, {ACPI_SIG_BDAT, AcpiDmTableInfoBdat, NULL, NULL, TemplateBdat}, {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt}, {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot}, + {ACPI_SIG_CCEL, AcpiDmTableInfoCcel, NULL, NULL, TemplateCcel}, + {ACPI_SIG_CDAT, NULL, AcpiDmDumpCdat, NULL, TemplateCdat}, {ACPI_SIG_CEDT, NULL, AcpiDmDumpCedt, DtCompileCedt, TemplateCedt}, {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep}, {ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt}, @@ -667,6 +677,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_DRTM, NULL, AcpiDmDumpDrtm, DtCompileDrtm, TemplateDrtm}, {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt}, {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj}, + {ACPI_SIG_ERDT, NULL, AcpiDmDumpErdt, DtCompileErdt, TemplateErdt}, {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst}, {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt}, {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt}, @@ -680,11 +691,13 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt}, {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg}, {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi}, + {ACPI_SIG_MPAM, NULL, AcpiDmDumpMpam, DtCompileMpam, TemplateMpam}, {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst}, + {ACPI_SIG_MRRM, NULL, AcpiDmDumpMrrm, DtCompileMrrm, TemplateMrrm}, {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct}, {ACPI_SIG_MSDM, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateMsdm}, {ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit}, - {ACPI_SIG_NHLT, AcpiDmTableInfoNhlt, AcpiDmDumpNhlt, DtCompileNhlt, TemplateNhlt}, + {ACPI_SIG_NHLT, NULL, NULL, NULL, NULL}, {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct}, {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt, AcpiDmDumpPdtt, DtCompilePdtt, TemplatePdtt}, {ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat}, @@ -692,7 +705,10 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt}, {ACPI_SIG_PRMT, NULL, AcpiDmDumpPrmt, DtCompilePrmt, TemplatePrmt}, {ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf}, + {ACPI_SIG_RAS2, AcpiDmTableInfoRas2, AcpiDmDumpRas2, DtCompileRas2, TemplateRas2}, {ACPI_SIG_RGRT, NULL, AcpiDmDumpRgrt, DtCompileRgrt, TemplateRgrt}, + {ACPI_SIG_RHCT, NULL, AcpiDmDumpRhct, DtCompileRhct, TemplateRhct}, + {ACPI_SIG_RIMT, NULL, AcpiDmDumpRimt, DtCompileRimt, TemplateRimt}, {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt}, {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt}, {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst}, @@ -705,6 +721,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat}, {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl}, + {ACPI_SIG_SWFT, NULL, NULL, NULL, NULL}, {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, {ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL, TemplateTdel}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, @@ -724,44 +741,6 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = /******************************************************************************* * - * FUNCTION: AcpiDmGenerateChecksum - * - * PARAMETERS: Table - Pointer to table to be checksummed - * Length - Length of the table - * OriginalChecksum - Value of the checksum field - * - * RETURN: 8 bit checksum of buffer - * - * DESCRIPTION: Computes an 8 bit checksum of the table. - * - ******************************************************************************/ - -UINT8 -AcpiDmGenerateChecksum ( - void *Table, - UINT32 Length, - UINT8 OriginalChecksum) -{ - UINT8 Checksum; - - - /* Sum the entire table as-is */ - - Checksum = AcpiTbChecksum ((UINT8 *) Table, Length); - - /* Subtract off the existing checksum value in the table */ - - Checksum = (UINT8) (Checksum - OriginalChecksum); - - /* Compute the final checksum */ - - Checksum = (UINT8) (0 - Checksum); - return (Checksum); -} - - -/******************************************************************************* - * * FUNCTION: AcpiDmGetTableData * * PARAMETERS: Signature - ACPI signature (4 chars) to match @@ -834,7 +813,7 @@ AcpiDmDumpDataTable ( /* * Handle tables that don't use the common ACPI table header structure. - * Currently, these are the FACS, RSDP, and S3PT. + * Currently, these are the FACS, RSDP, S3PT and CDAT. */ if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) { @@ -854,6 +833,28 @@ AcpiDmDumpDataTable ( { Length = AcpiDmDumpS3pt (Table); } + else if (!AcpiUtValidNameseg (Table->Signature)) + { + /* + * For CDAT we are assuming that there should be at least one non-ASCII + * byte in the (normally) 4-character Signature field (at least the + * high-order byte should be zero). + */ + if (AcpiGbl_CDAT) + { + /* + * Invalid signature and <-ds CDAT> was specified on the command line. + * Therefore, we have a CDAT table. + */ + AcpiDmDumpCdat (Table); + } + else + { + fprintf (stderr, "Table has an invalid signature\n"); + } + + return; + } else { /* @@ -977,7 +978,7 @@ AcpiDmLineHeader ( { if (ByteLength) { - AcpiOsPrintf ("[%3.3Xh %4.4d% 4d] %28s : ", + AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %27s : ", Offset, Offset, ByteLength, Name); } else @@ -1019,12 +1020,12 @@ AcpiDmLineHeader2 ( { if (ByteLength) { - AcpiOsPrintf ("[%3.3Xh %4.4d %3d] %24s %3d : ", + AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %24s %3d : ", Offset, Offset, ByteLength, Name, Value); } else { - AcpiOsPrintf ("[%3.3Xh %4.4d ] %24s %3d : ", + AcpiOsPrintf ("[%3.3Xh %4.4u ] %24s %3d : ", Offset, Offset, Name, Value); } } @@ -1106,7 +1107,8 @@ AcpiDmDumpTable ( { AcpiOsPrintf ( "/**** ACPI table terminates " - "in the middle of a data structure! (dump table) */\n"); + "in the middle of a data structure! (dump table)\n" + "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength); return (AE_BAD_DATA); } @@ -1123,12 +1125,7 @@ AcpiDmDumpTable ( case ACPI_DMT_IVRS_DE: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: - case ACPI_DMT_NHLT1: - case ACPI_DMT_NHLT1a: - case ACPI_DMT_NHLT1b: - case ACPI_DMT_NHLT1c: - case ACPI_DMT_NHLT1d: - case ACPI_DMT_NHLT1f: + case ACPI_DMT_MPAM_LOCATOR: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: @@ -1140,6 +1137,7 @@ AcpiDmDumpTable ( case ACPI_DMT_AEST_XFACE: case ACPI_DMT_AEST_XRUPT: case ACPI_DMT_ASF: + case ACPI_DMT_CDAT: case ACPI_DMT_HESTNTYP: case ACPI_DMT_FADTPM: case ACPI_DMT_EINJACT: @@ -1152,13 +1150,15 @@ AcpiDmDumpTable ( ByteLength = 1; break; + case ACPI_DMT_ASPT: case ACPI_DMT_UINT16: case ACPI_DMT_DMAR: + case ACPI_DMT_ERDT: case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: - case ACPI_DMT_NHLT1e: case ACPI_DMT_PHAT: + case ACPI_DMT_RHCT: ByteLength = 2; break; @@ -1207,6 +1207,11 @@ AcpiDmDumpTable ( ByteLength = 10; break; + case ACPI_DMT_BUF11: + + ByteLength = 11; + break; + case ACPI_DMT_BUF12: ByteLength = 12; @@ -1223,6 +1228,26 @@ AcpiDmDumpTable ( ByteLength = 18; break; + case ACPI_DMT_BUF24: + + ByteLength = 24; + break; + + case ACPI_DMT_BUF26: + + ByteLength = 26; + break; + + case ACPI_DMT_BUF32: + + ByteLength = 32; + break; + + case ACPI_DMT_BUF112: + + ByteLength = 112; + break; + case ACPI_DMT_BUF128: ByteLength = 128; @@ -1369,7 +1394,7 @@ AcpiDmDumpTable ( AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF); break; - case ACPI_DMT_FLAGS4: + case ACPI_DMT_FLAGS4: AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03); break; @@ -1431,9 +1456,14 @@ AcpiDmDumpTable ( case ACPI_DMT_BUF7: case ACPI_DMT_BUF10: + case ACPI_DMT_BUF11: case ACPI_DMT_BUF12: case ACPI_DMT_BUF16: case ACPI_DMT_BUF18: + case ACPI_DMT_BUF24: + case ACPI_DMT_BUF26: + case ACPI_DMT_BUF32: + case ACPI_DMT_BUF112: case ACPI_DMT_BUF128: /* * Buffer: Size depends on the opcode and was set above. @@ -1522,7 +1552,7 @@ AcpiDmDumpTable ( /* Checksum, display and validate */ AcpiOsPrintf ("%2.2X", *Target); - Temp8 = AcpiDmGenerateChecksum (Table, + Temp8 = AcpiUtGenerateChecksum (Table, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); @@ -1655,6 +1685,17 @@ AcpiDmDumpTable ( AcpiDmAestXruptNames[Temp8]); break; + case ACPI_DMT_ASPT: + /* ASPT subtable types */ + Temp16 = ACPI_GET16(Target); + if (Temp16 > ACPI_ASPT_TYPE_UNKNOWN) + { + Temp16 = ACPI_ASPT_TYPE_UNKNOWN; + } + + AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmAsptSubnames[Temp16]); + break; + case ACPI_DMT_ASF: /* ASF subtable types */ @@ -1668,6 +1709,20 @@ AcpiDmDumpTable ( AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); break; + case ACPI_DMT_CDAT: + + /* CDAT subtable types */ + + Temp8 = *Target; + if (Temp8 > ACPI_CDAT_TYPE_RESERVED) + { + Temp8 = ACPI_CDAT_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmCdatSubnames[Temp8]); + break; + case ACPI_DMT_CEDT: /* CEDT subtable types */ @@ -1752,6 +1807,20 @@ AcpiDmDumpTable ( AcpiDmErstActions[Temp8]); break; + case ACPI_DMT_ERDT: + + /* ERDT subtable types */ + + Temp16 = *Target; + if (Temp16 > ACPI_ERDT_TYPE_RESERVED) + { + Temp16 = ACPI_ERDT_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmErdtSubnames[Temp16]); + break; + case ACPI_DMT_ERSTINST: /* ERST Instruction types */ @@ -1870,135 +1939,32 @@ AcpiDmDumpTable ( AcpiDmMadtSubnames[Temp8]); break; - case ACPI_DMT_NFIT: - - /* NFIT subtable types */ - - Temp16 = ACPI_GET16 (Target); - if (Temp16 > ACPI_NFIT_TYPE_RESERVED) - { - Temp16 = ACPI_NFIT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), - AcpiDmNfitSubnames[Temp16]); - break; - - case ACPI_DMT_NHLT1: - - /* NHLT link types */ - - Temp8 = *Target; - if (Temp8 > ACPI_NHLT_TYPE_RESERVED) - { - Temp8 = ACPI_NHLT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmNhltLinkTypeNames[Temp8]); - break; - - case ACPI_DMT_NHLT1a: - - /* NHLT direction */ - - Temp8 = *Target; - if (Temp8 > ACPI_NHLT_DIR_RESERVED) - { - Temp8 = ACPI_NHLT_DIR_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmNhltDirectionNames[Temp8]); - break; - - case ACPI_DMT_NHLT1b: - - /* NHLT microphone type */ - - Temp8 = *Target; - if (Temp8 > ACPI_NHLT_MIC_RESERVED) - { - Temp8 = ACPI_NHLT_MIC_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmNhltMicTypeNames[Temp8]); - break; - - case ACPI_DMT_NHLT1c: + case ACPI_DMT_MPAM_LOCATOR: - /* NHLT microphone position */ + /* MPAM subtable locator types */ Temp8 = *Target; - if (Temp8 > ACPI_NHLT_MIC_POSITION_RESERVED) + if (Temp8 > ACPI_MPAM_LOCATION_TYPE_INTERCONNECT) { - Temp8 = ACPI_NHLT_MIC_POSITION_RESERVED; + Temp8 = ACPI_MPAM_LOCATION_TYPE_INTERCONNECT + 1; } AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmNhltMicPositionNames[Temp8]); + AcpiDmMpamSubnames[Temp8]); break; - case ACPI_DMT_NHLT1d: - - /* NHLT microphone array type */ - - Temp8 = *Target & ACPI_NHLT_ARRAY_TYPE_MASK; - if (Temp8 < ACPI_NHLT_ARRAY_TYPE_RESERVED) - { - Temp8 = ACPI_NHLT_ARRAY_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT_NO_NEWLINE, *Target, - AcpiDmNhltMicArrayTypeNames[Temp8 - ACPI_NHLT_ARRAY_TYPE_RESERVED]); - - Temp8 = *Target; - if (Temp8 & ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT) - { - AcpiOsPrintf (" [%s]", "SNR and Sensitivity"); - } - - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_NHLT1e: + case ACPI_DMT_NFIT: - /* NHLT Endpoint Device ID */ + /* NFIT subtable types */ Temp16 = ACPI_GET16 (Target); - if (Temp16 == 0xAE20) - { - Name = "PDM DMIC"; - } - else if (Temp16 == 0xAE30) - { - Name = "BT Sideband"; - } - else if (Temp16 == 0xAE34) - { - Name = "I2S/TDM Codecs"; - } - else - { - Name = "Unknown Device ID"; - } - - AcpiOsPrintf (UINT16_FORMAT, Temp16, Name); - break; - - case ACPI_DMT_NHLT1f: - - /* NHLT ConfigType field */ - - Temp8 = *Target; - if (Temp8 > ACPI_NHLT_CONFIG_TYPE_RESERVED) + if (Temp16 > ACPI_NFIT_TYPE_RESERVED) { - Temp8 = ACPI_NHLT_CONFIG_TYPE_RESERVED; + Temp16 = ACPI_NFIT_TYPE_RESERVED; } - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmNhltConfigTypeNames[Temp8]); + AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), + AcpiDmNfitSubnames[Temp16]); break; case ACPI_DMT_PCCT: @@ -2017,15 +1983,15 @@ AcpiDmDumpTable ( case ACPI_DMT_PHAT: - /* PMTT subtable types */ + /* PHAT subtable types */ - Temp16 = *Target; + Temp16 = ACPI_GET16 (Target); if (Temp16 > ACPI_PHAT_TYPE_RESERVED) { Temp16 = ACPI_PHAT_TYPE_RESERVED; } - AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16(Target), + AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmPhatSubnames[Temp16]); break; @@ -2069,7 +2035,7 @@ AcpiDmDumpTable ( break; } - AcpiDmDumpUnicode (Table, CurrentOffset, ByteLength); + AcpiDmDumpUnicode (Table, 0, ByteLength); break; case ACPI_DMT_RAW_BUFFER: @@ -2099,6 +2065,20 @@ AcpiDmDumpTable ( AcpiDmRgrtSubnames[Temp8]); break; + case ACPI_DMT_RHCT: + + /* RHCT subtable types */ + + Temp16 = ACPI_GET16 (Target); + if (Temp16 == ACPI_RHCT_NODE_TYPE_HART_INFO) + { + Temp16 = ACPI_RHCT_NODE_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), + AcpiDmRhctSubnames[Temp16]); + break; + case ACPI_DMT_SDEV: /* SDEV subtable types */ diff --git a/sys/contrib/dev/acpica/common/dmtables.c b/sys/contrib/dev/acpica/common/dmtables.c index 13ecdf40909e..c72f6451154c 100644 --- a/sys/contrib/dev/acpica/common/dmtables.c +++ b/sys/contrib/dev/acpica/common/dmtables.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -190,7 +190,7 @@ extern ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; * RETURN: None * * DESCRIPTION: Create the disassembler header, including ACPICA signon with - * current time and date. + * optional current time and date. * *****************************************************************************/ @@ -202,8 +202,6 @@ AdDisassemblerHeader ( time_t Timer; - time (&Timer); - /* Header and input table info */ AcpiOsPrintf ("/*\n"); @@ -225,7 +223,15 @@ AdDisassemblerHeader ( } } - AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); + if (AslGbl_Deterministic) + { + AcpiOsPrintf (" * Disassembly of %s\n", Filename); + } + else + { + time (&Timer); + AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); + } AcpiOsPrintf (" *\n"); } @@ -296,7 +302,7 @@ AdCreateTableHeader ( AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum); - Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); + Checksum = AcpiUtChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); if (Checksum) { AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", diff --git a/sys/contrib/dev/acpica/common/dmtbdump.c b/sys/contrib/dev/acpica/common/dmtbdump.c index b87c276cc625..aa8b5aa76892 100644 --- a/sys/contrib/dev/acpica/common/dmtbdump.c +++ b/sys/contrib/dev/acpica/common/dmtbdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -266,14 +266,7 @@ AcpiDmDumpBuffer ( /* Done with that line. */ /* Close the comment and insert a backslash - line continuation character */ - if (Length > 16) - { - AcpiOsPrintf (" */\\"); - } - else - { - AcpiOsPrintf (" */\\"); - } + AcpiOsPrintf (" */\\"); i += 16; /* Point to next line */ } @@ -384,7 +377,7 @@ AcpiDmDumpRsdp ( /* Validate the first checksum */ - Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), + Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), Rsdp->Checksum); if (Checksum != Rsdp->Checksum) { @@ -405,7 +398,7 @@ AcpiDmDumpRsdp ( /* Validate the extended checksum over entire RSDP */ - Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), + Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), Rsdp->ExtendedChecksum); if (Checksum != Rsdp->ExtendedChecksum) { @@ -569,7 +562,7 @@ AcpiDmDumpFadt ( /* Check for FADT revision 6 fields and up (ACPI 6.0+) */ - if (Table->Length > ACPI_FADT_V3_SIZE) + if (Table->Length > ACPI_FADT_V5_SIZE) { Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); @@ -642,6 +635,11 @@ AcpiDmValidateFadtLength ( ExpectedLength = ACPI_FADT_V5_SIZE; break; + case 6: + + ExpectedLength = ACPI_FADT_V6_SIZE; + break; + default: return; diff --git a/sys/contrib/dev/acpica/common/dmtbdump1.c b/sys/contrib/dev/acpica/common/dmtbdump1.c index c21d641d25a0..3453ed479a22 100644 --- a/sys/contrib/dev/acpica/common/dmtbdump1.c +++ b/sys/contrib/dev/acpica/common/dmtbdump1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -153,6 +153,7 @@ #include <contrib/dev/acpica/include/accommon.h> #include <contrib/dev/acpica/include/acdisasm.h> #include <contrib/dev/acpica/include/actables.h> +#include <contrib/dev/acpica/compiler/aslcompiler.h> /* This module used for application-level code only */ @@ -194,6 +195,9 @@ AcpiDmDumpAest ( ACPI_DMTABLE_INFO *InfoTable; ACPI_SIZE Length; UINT8 Type; + UINT8 Revision = Table->Revision; + UINT32 Count; + ACPI_AEST_NODE_INTERFACE_HEADER *InterfaceHeader; /* Very small, generic main table. AEST consists of mostly subtables */ @@ -233,8 +237,22 @@ AcpiDmDumpAest ( break; case ACPI_AEST_VENDOR_ERROR_NODE: - InfoTable = AcpiDmTableInfoAestVendorError; - Length = sizeof (ACPI_AEST_VENDOR); + switch (Revision) + { + case 1: + InfoTable = AcpiDmTableInfoAestVendorError; + Length = sizeof (ACPI_AEST_VENDOR); + break; + + case 2: + InfoTable = AcpiDmTableInfoAestVendorV2Error; + Length = sizeof (ACPI_AEST_VENDOR_V2); + break; + + default: + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision); + return; + } break; case ACPI_AEST_GIC_ERROR_NODE: @@ -242,6 +260,16 @@ AcpiDmDumpAest ( Length = sizeof (ACPI_AEST_GIC); break; + case ACPI_AEST_PCIE_ERROR_NODE: + InfoTable = AcpiDmTableInfoAestPCIeError; + Length = sizeof (ACPI_AEST_PCIE); + break; + + case ACPI_AEST_PROXY_ERROR_NODE: + InfoTable = AcpiDmTableInfoAestProxyError; + Length = sizeof (ACPI_AEST_PROXY); + break; + /* Error case below */ default: @@ -334,8 +362,57 @@ AcpiDmDumpAest ( return; } - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, - sizeof (ACPI_AEST_NODE_INTERFACE), AcpiDmTableInfoAestXface); + if (Revision == 1) + { + InfoTable = AcpiDmTableInfoAestXface; + Length = sizeof (ACPI_AEST_NODE_INTERFACE); + } + else if (Revision == 2) + { + InfoTable = AcpiDmTableInfoAestXfaceHeader; + Length = sizeof (ACPI_AEST_NODE_INTERFACE_HEADER); + + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += Length; + + InterfaceHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER, Subtable); + switch (InterfaceHeader->GroupFormat) + { + case ACPI_AEST_NODE_GROUP_FORMAT_4K: + InfoTable = AcpiDmTableInfoAestXface4k; + Length = sizeof (ACPI_AEST_NODE_INTERFACE_4K); + break; + + case ACPI_AEST_NODE_GROUP_FORMAT_16K: + InfoTable = AcpiDmTableInfoAestXface16k; + Length = sizeof (ACPI_AEST_NODE_INTERFACE_16K); + break; + + case ACPI_AEST_NODE_GROUP_FORMAT_64K: + InfoTable = AcpiDmTableInfoAestXface64k; + Length = sizeof (ACPI_AEST_NODE_INTERFACE_64K); + break; + + default: + AcpiOsPrintf ("\n**** Unknown AEST Interface Group Format 0x%X\n", + InterfaceHeader->GroupFormat); + return; + } + + Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset); + } + else + { + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision); + return; + } + + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -344,22 +421,36 @@ AcpiDmDumpAest ( /* Point past the interface structure */ AcpiOsPrintf ("\n"); - Offset += sizeof (ACPI_AEST_NODE_INTERFACE); + Offset += Length; /* Dump the entire interrupt structure array, if present */ if (NodeHeader->NodeInterruptOffset) { - Length = NodeHeader->NodeInterruptCount; + Count = NodeHeader->NodeInterruptCount; Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset); - while (Length) + while (Count) { /* Dump the interrupt structure */ + switch (Revision) { + case 1: + InfoTable = AcpiDmTableInfoAestXrupt; + Length = sizeof (ACPI_AEST_NODE_INTERRUPT); + break; + + case 2: + InfoTable = AcpiDmTableInfoAestXruptV2; + Length = sizeof (ACPI_AEST_NODE_INTERRUPT_V2); + break; + default: + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", + Revision); + return; + } Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, - sizeof (ACPI_AEST_NODE_INTERRUPT), - AcpiDmTableInfoAestXrupt); + Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -367,9 +458,9 @@ AcpiDmDumpAest ( /* Point to the next interrupt structure */ - Offset += sizeof (ACPI_AEST_NODE_INTERRUPT); + Offset += Length; Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset); - Length--; + Count--; AcpiOsPrintf ("\n"); } } @@ -610,6 +701,281 @@ AcpiDmDumpAsf ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpAspt + * + * PARAMETERS: Table - A ASPT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a ASPT table + * + ******************************************************************************/ + +void +AcpiDmDumpAspt ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_ASPT); + UINT32 Length = Table->Length; + ACPI_ASPT_HEADER *Subtable; + ACPI_DMTABLE_INFO *InfoTable; + UINT16 Type; + + /* Main table */ + Status = AcpiDmDumpTable(Length, 0, Table, 0, AcpiDmTableInfoAspt); + + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_ASPT_HEADER, Table, Offset); + while (Offset < Table->Length) + { + AcpiOsPrintf ("\n"); + + /* Common subtable header */ + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoAsptHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + Type = Subtable->Type; + + switch (Type) + { + case ACPI_ASPT_TYPE_GLOBAL_REGS: + + InfoTable = AcpiDmTableInfoAspt0; + break; + + case ACPI_ASPT_TYPE_SEV_MBOX_REGS: + + InfoTable = AcpiDmTableInfoAspt1; + break; + + case ACPI_ASPT_TYPE_ACPI_MBOX_REGS: + + InfoTable = AcpiDmTableInfoAspt2; + break; + + default: + + AcpiOsPrintf ("\n**** Unknown ASPT subtable type 0x%X\n", + Subtable->Type); + return; + } + + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + AcpiOsPrintf ("\n"); + + /* Point to next subtable */ + if (!Subtable->Length) + { + AcpiOsPrintf ("Invalid zero subtable header length\n"); + return; + } + + Offset += Subtable->Length; + Subtable = ACPI_ADD_PTR (ACPI_ASPT_HEADER, Subtable, + Subtable->Length); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDmDumpCdat + * + * PARAMETERS: InTable - A CDAT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a CDAT. This table type consists + * of an open-ended number of subtables. + * + ******************************************************************************/ + +void +AcpiDmDumpCdat ( + ACPI_TABLE_HEADER *InTable) +{ + ACPI_TABLE_CDAT *Table = ACPI_CAST_PTR (ACPI_TABLE_CDAT, InTable); + ACPI_STATUS Status; + ACPI_CDAT_HEADER *Subtable; + ACPI_TABLE_CDAT *CdatTable = ACPI_CAST_PTR (ACPI_TABLE_CDAT, Table); + ACPI_DMTABLE_INFO *InfoTable; + UINT32 Length = CdatTable->Length; + UINT32 Offset = sizeof (ACPI_TABLE_CDAT); + UINT32 SubtableLength; + UINT32 SubtableType; + INT32 EntriesLength; + + + /* Main table */ + + Status = AcpiDmDumpTable (Offset, 0, CdatTable, 0, + AcpiDmTableInfoCdatTableHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, sizeof (ACPI_TABLE_CDAT)); + while (Offset < Table->Length) + { + /* Dump the common subtable header */ + + DbgPrint (ASL_DEBUG_OUTPUT, "0) HeaderOffset: %X\n", Offset); + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset, Subtable, + sizeof (ACPI_CDAT_HEADER), AcpiDmTableInfoCdatHeader); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Point past the common subtable header, decode the subtable type */ + + Offset += sizeof (ACPI_CDAT_HEADER); + SubtableType = Subtable->Type; + + switch (Subtable->Type) + { + case ACPI_CDAT_TYPE_DSMAS: + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + SubtableLength = sizeof (ACPI_CDAT_DSMAS); + + InfoTable = AcpiDmTableInfoCdat0; + break; + + case ACPI_CDAT_TYPE_DSLBIS: + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + SubtableLength = sizeof (ACPI_CDAT_DSLBIS); + DbgPrint (ASL_DEBUG_OUTPUT, "1) Offset: %X\n", Offset); + + InfoTable = AcpiDmTableInfoCdat1; + break; + + case ACPI_CDAT_TYPE_DSMSCIS: + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + SubtableLength = sizeof (ACPI_CDAT_DSMSCIS); + + InfoTable = AcpiDmTableInfoCdat2; + break; + + case ACPI_CDAT_TYPE_DSIS: + DbgPrint (ASL_DEBUG_OUTPUT, "2) Offset: %X ", Offset); + SubtableLength = sizeof (ACPI_CDAT_DSIS); + DbgPrint (ASL_DEBUG_OUTPUT, "1) input pointer: %p\n", Table); + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + DbgPrint (ASL_DEBUG_OUTPUT, "1) output pointers: %p, %p, Offset: %X\n", + Table, Subtable, Offset); + DbgPrint (ASL_DEBUG_OUTPUT, "3) Offset: %X\n", Offset); + + InfoTable = AcpiDmTableInfoCdat3; + break; + + case ACPI_CDAT_TYPE_DSEMTS: + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + SubtableLength = sizeof (ACPI_CDAT_DSEMTS); + + InfoTable = AcpiDmTableInfoCdat4; + break; + + case ACPI_CDAT_TYPE_SSLBIS: + SubtableLength = Subtable->Length; + + InfoTable = AcpiDmTableInfoCdat5; + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + break; + + default: + fprintf (stderr, "ERROR: Unknown SubtableType: %X\n", Subtable->Type); + return; + } + + DbgPrint (ASL_DEBUG_OUTPUT, "SubtableType: %X, Length: %X Actual " + "Length: %X Offset: %X tableptr: %p\n", SubtableType, + Subtable->Length, SubtableLength, Offset, Table); + + /* + * Do the subtable-specific fields + */ + Status = AcpiDmDumpTable (Length, Offset, Subtable, Offset, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + DbgPrint (ASL_DEBUG_OUTPUT, "Subtable Type: %X, Offset: %X, SubtableLength: %X\n", + SubtableType, Offset, SubtableLength); + + /* Additional sub-subtables, dependent on the main subtable type */ + + switch (SubtableType) + { + case ACPI_CDAT_TYPE_SSLBIS: + Offset += sizeof (ACPI_CDAT_SSLBIS); + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, + Offset); + + DbgPrint (ASL_DEBUG_OUTPUT, "Case SSLBIS, Offset: %X, SubtableLength: %X " + "Subtable->Length %X\n", Offset, SubtableLength, Subtable->Length); + + /* Generate the total length of all the SSLBE entries */ + + EntriesLength = SubtableLength - sizeof (ACPI_CDAT_HEADER) - + sizeof (ACPI_CDAT_SSLBIS); + DbgPrint (ASL_DEBUG_OUTPUT, "EntriesLength: %X, Offset: %X, Table->Length: %X\n", + EntriesLength, Offset, Table->Length); + + /* Do each of the SSLBE Entries */ + + while ((EntriesLength > 0) && (Offset < Table->Length)) + { + AcpiOsPrintf ("\n"); + + Status = AcpiDmDumpTable (Length, Offset, Subtable, Offset, + AcpiDmTableInfoCdatEntries); + if (ACPI_FAILURE (Status)) + { + return; + } + + EntriesLength -= sizeof (ACPI_CDAT_SSLBE); + Offset += sizeof (ACPI_CDAT_SSLBE); + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + } + + SubtableLength = 0; + break; + + default: + break; + } + + DbgPrint (ASL_DEBUG_OUTPUT, "Offset: %X, Subtable Length: %X\n", + Offset, SubtableLength); + + /* Point to next subtable */ + + Offset += SubtableLength; + Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset); + } + + return; +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpCedt * * PARAMETERS: Table - A CEDT table @@ -651,31 +1017,73 @@ AcpiDmDumpCedt ( case ACPI_CEDT_TYPE_CHBS: Status = AcpiDmDumpTable (Length, Offset, Subtable, Subtable->Length, AcpiDmTableInfoCedt0); - if (ACPI_FAILURE (Status)) { + if (ACPI_FAILURE (Status)) + { return; } break; - case ACPI_CEDT_TYPE_CFMWS: { + case ACPI_CEDT_TYPE_CFMWS: + { ACPI_CEDT_CFMWS *ptr = (ACPI_CEDT_CFMWS *) Subtable; - unsigned int i, max = 0x01 << (ptr->InterleaveWays); + unsigned int i, max; + + if (ptr->InterleaveWays < 8) + max = 1 << (ptr->InterleaveWays); + else + max = 3 << (ptr->InterleaveWays - 8); - /* print out table with first "Interleave target" */ + /* print out table with first "Interleave target" */ Status = AcpiDmDumpTable (Length, Offset, Subtable, Subtable->Length, AcpiDmTableInfoCedt1); - if (ACPI_FAILURE (Status)) { + if (ACPI_FAILURE (Status)) + { return; } /* Now, print out any interleave targets beyond the first. */ - for (i = 1; i < max; i++) { - unsigned int loc_offset = Offset + (i * 4) + ACPI_OFFSET(ACPI_CEDT_CFMWS, InterleaveTargets); + for (i = 1; i < max; i++) + { + unsigned int loc_offset = Offset + (i * 4) + ACPI_OFFSET (ACPI_CEDT_CFMWS, InterleaveTargets); unsigned int *trg = &(ptr->InterleaveTargets[i]); + Status = AcpiDmDumpTable (Length, loc_offset, trg, Subtable->Length, AcpiDmTableInfoCedt1_te); - if (ACPI_FAILURE (Status)) { + if (ACPI_FAILURE (Status)) + { + return; + } + } + break; + } + + case ACPI_CEDT_TYPE_CXIMS: + { + ACPI_CEDT_CXIMS *ptr = (ACPI_CEDT_CXIMS *) Subtable; + unsigned int i, max = ptr->NrXormaps; + + /* print out table with first "XOR Map" */ + + Status = AcpiDmDumpTable (Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoCedt2); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Now, print out any XOR Map beyond the first. */ + + for (i = 1; i < max; i++) + { + unsigned int loc_offset = Offset + (i * 1) + ACPI_OFFSET (ACPI_CEDT_CXIMS, XormapList); + UINT64 *trg = &(ptr->XormapList[i]); + + Status = AcpiDmDumpTable (Length, loc_offset, trg, + Subtable->Length, AcpiDmTableInfoCedt2_te); + if (ACPI_FAILURE (Status)) + { return; } } @@ -963,8 +1371,8 @@ AcpiDmDumpDbg2 ( if (Subtable->OemDataOffset) { - Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset, - Table, Subtable->OemDataLength, + Status = AcpiDmDumpTable (Length, Subtable->OemDataOffset, + Subtable, Subtable->OemDataLength, AcpiDmTableInfoDbg2OemData); if (ACPI_FAILURE (Status)) { @@ -1072,6 +1480,12 @@ AcpiDmDumpDmar ( ScopeOffset = sizeof (ACPI_DMAR_SATC); break; + case ACPI_DMAR_TYPE_SIDP: + + InfoTable = AcpiDmTableInfoDmar6; + ScopeOffset = sizeof (ACPI_DMAR_SIDP); + break; + default: AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", @@ -1311,6 +1725,233 @@ AcpiDmDumpEinj ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpErdt + * + * PARAMETERS: Table - A ERDT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a ERDT. This table type consists + * of an open-ended number of subtables. + * + ******************************************************************************/ + +void +AcpiDmDumpErdt ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_SUBTBL_HDR_16 *Subtable, *Subsubtable; + ACPI_ERDT_DACD_PATHS *ScopeTable; + UINT32 Offset = sizeof (ACPI_TABLE_ERDT); + UINT32 Suboffset; + UINT32 ScopeOffset; + UINT32 SubsubtableLength = 0; + ACPI_DMTABLE_INFO *InfoTable, *TrailEntries, *DacdEntries; + UINT32 NumTrailers = 0; + + /* Main table */ + + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoErdt); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables */ + Subtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Offset); + while (Offset < Table->Length) + { + + /* Dump common header */ + + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoErdtHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoErdtRmdd); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables of this RMDD table */ + + Suboffset = Offset + sizeof(ACPI_ERDT_RMDD); + Subsubtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Suboffset); + while (Suboffset < Offset + Subtable->Length) + { + AcpiOsPrintf ("\n"); + + TrailEntries = NULL; + DacdEntries = NULL; + switch (Subsubtable->Type) + { + case ACPI_ERDT_TYPE_CACD: + InfoTable = AcpiDmTableInfoErdtCacd; + TrailEntries = AcpiDmTableInfoErdtCacdX2apic; + SubsubtableLength = sizeof(ACPI_ERDT_CACD); + break; + + case ACPI_ERDT_TYPE_DACD: + InfoTable = AcpiDmTableInfoErdtDacd; + DacdEntries = AcpiDmTableInfoErdtDacdScope; + SubsubtableLength = sizeof(ACPI_ERDT_DACD); + break; + + case ACPI_ERDT_TYPE_CMRC: + InfoTable = AcpiDmTableInfoErdtCmrc; + break; + + case ACPI_ERDT_TYPE_MMRC: + InfoTable = AcpiDmTableInfoErdtMmrc; + TrailEntries = AcpiDmTableInfoErdtMmrcCorrFactor; + SubsubtableLength = sizeof(ACPI_ERDT_MMRC); + break; + + case ACPI_ERDT_TYPE_MARC: + InfoTable = AcpiDmTableInfoErdtMarc; + break; + + case ACPI_ERDT_TYPE_CARC: + InfoTable = AcpiDmTableInfoErdtCarc; + break; + + case ACPI_ERDT_TYPE_CMRD: + InfoTable = AcpiDmTableInfoErdtCmrd; + break; + + case ACPI_ERDT_TYPE_IBRD: + InfoTable = AcpiDmTableInfoErdtIbrd; + TrailEntries = AcpiDmTableInfoErdtIbrdCorrFactor; + SubsubtableLength = sizeof(ACPI_ERDT_IBRD); + break; + + case ACPI_ERDT_TYPE_IBAD: + InfoTable = AcpiDmTableInfoErdtIbad; + break; + + case ACPI_ERDT_TYPE_CARD: + InfoTable = AcpiDmTableInfoErdtCard; + break; + + default: + AcpiOsPrintf ("\n**** Unknown RMDD subtable type 0x%X\n", + Subsubtable->Type); + + /* Attempt to continue */ + + if (!Subsubtable->Length) + { + AcpiOsPrintf ("Invalid zero length subtable\n"); + return; + } + goto NextSubsubtable; + } + + /* Dump subtable header */ + + Status = AcpiDmDumpTable (Table->Length, Suboffset, Subsubtable, + Subsubtable->Length, AcpiDmTableInfoErdtHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Dump subtable body */ + + Status = AcpiDmDumpTable (Table->Length, Suboffset, Subsubtable, + Subsubtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* CACD, MMRC, and IBRD subtables have simple flex array at end */ + + if (TrailEntries) + { + NumTrailers = 0; + while (NumTrailers < Subsubtable->Length - SubsubtableLength) + { + + /* Dump one flex array element */ + + Status = AcpiDmDumpTable (Table->Length, Suboffset + + SubsubtableLength + NumTrailers, + ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Subsubtable, + SubsubtableLength + NumTrailers), + sizeof(UINT32), TrailEntries); + if (ACPI_FAILURE (Status)) + { + return; + } + NumTrailers += sizeof(UINT32); + } + } + + /* DACD subtable has flex array of device agent structures */ + + if (DacdEntries) { + ScopeOffset = Suboffset + SubsubtableLength; + ScopeTable = ACPI_ADD_PTR (ACPI_ERDT_DACD_PATHS, + Subsubtable, SubsubtableLength); + while (ScopeOffset < Suboffset + Subsubtable->Length) + { + /* Dump one device agent structure */ + + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, ScopeOffset, + ScopeTable, ScopeTable->Header.Length, DacdEntries); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Flex array of UINT8 for device path */ + + NumTrailers = 0; + while (NumTrailers < ScopeTable->Header.Length - sizeof(ACPI_ERDT_DACD_PATHS)) + { + /* Dump one UINT8 of the device path */ + + Status = AcpiDmDumpTable (Table->Length, ScopeOffset + + sizeof(ACPI_ERDT_DACD_PATHS) + NumTrailers, + ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, ScopeTable, + sizeof(*ScopeTable) + NumTrailers), + sizeof(UINT32), AcpiDmTableInfoErdtDacdPath); + if (ACPI_FAILURE (Status)) + { + return; + } + NumTrailers++; + } + + ScopeOffset += ScopeTable->Header.Length; + ScopeTable = ACPI_ADD_PTR (ACPI_ERDT_DACD_PATHS, + ScopeTable, ScopeTable->Header.Length); + } + } +NextSubsubtable: + Suboffset += Subsubtable->Length; + Subsubtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Suboffset); + } + + Offset += Subtable->Length; + Subtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Subtable, + Subtable->Length); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpErst * * PARAMETERS: Table - A ERST table @@ -1837,7 +2478,7 @@ AcpiDmDumpHmat ( return; } - /* Dump HMAT structure additionals */ + /* Dump HMAT structure additional */ switch (HmatStruct->Type) { diff --git a/sys/contrib/dev/acpica/common/dmtbdump2.c b/sys/contrib/dev/acpica/common/dmtbdump2.c index 8371b8748977..d29a60be0f67 100644 --- a/sys/contrib/dev/acpica/common/dmtbdump2.c +++ b/sys/contrib/dev/acpica/common/dmtbdump2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -149,6 +149,7 @@ * *****************************************************************************/ +#include <wchar.h> #include <contrib/dev/acpica/include/acpi.h> #include <contrib/dev/acpica/include/accommon.h> #include <contrib/dev/acpica/include/acdisasm.h> @@ -874,6 +875,7 @@ AcpiDmDumpMadt ( UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_MADT); ACPI_DMTABLE_INFO *InfoTable; + UINT8 Revision; /* Main table */ @@ -884,6 +886,8 @@ AcpiDmDumpMadt ( return; } + Revision = Table->Revision; + /* Subtables */ Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); @@ -961,7 +965,12 @@ AcpiDmDumpMadt ( case ACPI_MADT_TYPE_GENERIC_INTERRUPT: - InfoTable = AcpiDmTableInfoMadt11; + if (Revision > 6) + InfoTable = AcpiDmTableInfoMadt11b; + else if (Revision == 6) + InfoTable = AcpiDmTableInfoMadt11a; + else + InfoTable = AcpiDmTableInfoMadt11; break; case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR: @@ -976,12 +985,14 @@ AcpiDmDumpMadt ( case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR: - InfoTable = AcpiDmTableInfoMadt14; + InfoTable = Revision > 6 ? AcpiDmTableInfoMadt14a : + AcpiDmTableInfoMadt14; break; case ACPI_MADT_TYPE_GENERIC_TRANSLATOR: - InfoTable = AcpiDmTableInfoMadt15; + InfoTable = Revision > 6 ? AcpiDmTableInfoMadt15a : + AcpiDmTableInfoMadt15; break; case ACPI_MADT_TYPE_MULTIPROC_WAKEUP: @@ -989,6 +1000,61 @@ AcpiDmDumpMadt ( InfoTable = AcpiDmTableInfoMadt16; break; + case ACPI_MADT_TYPE_CORE_PIC: + + InfoTable = AcpiDmTableInfoMadt17; + break; + + case ACPI_MADT_TYPE_LIO_PIC: + + InfoTable = AcpiDmTableInfoMadt18; + break; + + case ACPI_MADT_TYPE_HT_PIC: + + InfoTable = AcpiDmTableInfoMadt19; + break; + + case ACPI_MADT_TYPE_EIO_PIC: + + InfoTable = AcpiDmTableInfoMadt20; + break; + + case ACPI_MADT_TYPE_MSI_PIC: + + InfoTable = AcpiDmTableInfoMadt21; + break; + + case ACPI_MADT_TYPE_BIO_PIC: + + InfoTable = AcpiDmTableInfoMadt22; + break; + + case ACPI_MADT_TYPE_LPC_PIC: + + InfoTable = AcpiDmTableInfoMadt23; + break; + + case ACPI_MADT_TYPE_RINTC: + + InfoTable = AcpiDmTableInfoMadt24; + break; + + case ACPI_MADT_TYPE_IMSIC: + + InfoTable = AcpiDmTableInfoMadt25; + break; + + case ACPI_MADT_TYPE_APLIC: + + InfoTable = AcpiDmTableInfoMadt26; + break; + + case ACPI_MADT_TYPE_PLIC: + + InfoTable = AcpiDmTableInfoMadt27; + break; + default: if ((Subtable->Type >= ACPI_MADT_TYPE_RESERVED) && @@ -1020,7 +1086,7 @@ AcpiDmDumpMadt ( /* Dump the OEM data */ Status = AcpiDmDumpTable (Length, Offset, ACPI_CAST_PTR (UINT8, Table) + Offset, - Subtable->Length - sizeof (ACPI_SUBTABLE_HEADER), AcpiDmTableInfoMadt17); + Subtable->Length - sizeof (ACPI_SUBTABLE_HEADER), AcpiDmTableInfoMadt128); if (ACPI_FAILURE (Status)) { return; @@ -1057,16 +1123,16 @@ NextSubtable: Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, Subtable->Length); - DbgPrint (ASL_PARSE_OUTPUT, "//[5) Next Subtable %p, length %X]\n", - Subtable, Subtable->Length); - DbgPrint (ASL_PARSE_OUTPUT, "//[5B) Offset from table start: 0x%8.8X%8.8X (%p)]\n", - ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)), Subtable); - Offset = ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table); if (Offset >= Table->Length) { return; } + + DbgPrint (ASL_PARSE_OUTPUT, "//[5) Next Subtable %p, length %X]\n", + Subtable, Subtable->Length); + DbgPrint (ASL_PARSE_OUTPUT, "//[5B) Offset from table start: 0x%8.8X%8.8X (%p)]\n", + ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)), Subtable); } } @@ -1128,6 +1194,137 @@ AcpiDmDumpMcfg ( } } +/******************************************************************************* + * + * FUNCTION: AcpiDmDumpMpam + * + * PARAMETERS: Table - A MPAM table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a MPAM table + * + ******************************************************************************/ + +void +AcpiDmDumpMpam ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_MPAM_MSC_NODE *MpamMscNode; + ACPI_MPAM_RESOURCE_NODE *MpamResourceNode; + ACPI_MPAM_FUNC_DEPS *MpamFunctionalDependency; + ACPI_DMTABLE_INFO *InfoTable; + UINT32 Offset = sizeof(ACPI_TABLE_HEADER); + UINT32 TempOffset; + UINT32 MpamResourceNodeLength = 0; + + while (Offset < Table->Length) + { + MpamMscNode = ACPI_ADD_PTR (ACPI_MPAM_MSC_NODE, Table, Offset); + + /* Subtable: MSC */ + Status = AcpiDmDumpTable (Table->Length, Offset, MpamMscNode, + MpamMscNode->Length, AcpiDmTableInfoMpam0); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Offset the start of the array of resources */ + Offset += sizeof(ACPI_MPAM_MSC_NODE); + + /* Subtable: MSC RIS(es) */ + for (UINT32 ResourceIdx = 0; ResourceIdx < MpamMscNode->NumResourceNodes; ResourceIdx++) + { + AcpiOsPrintf ("\n"); + MpamResourceNode = ACPI_ADD_PTR (ACPI_MPAM_RESOURCE_NODE, Table, Offset); + + MpamResourceNodeLength = sizeof(ACPI_MPAM_RESOURCE_NODE) + + MpamResourceNode->NumFunctionalDeps * sizeof(ACPI_MPAM_FUNC_DEPS); + TempOffset = Offset; + Offset += MpamResourceNodeLength; + + /* Subtable: MSC RIS */ + Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamResourceNode, + sizeof(ACPI_MPAM_RESOURCE_NODE), AcpiDmTableInfoMpam1); + if (ACPI_FAILURE (Status)) + { + return; + } + + switch (MpamResourceNode->LocatorType) + { + case ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE: + InfoTable = AcpiDmTableInfoMpam1A; + break; + case ACPI_MPAM_LOCATION_TYPE_MEMORY: + InfoTable = AcpiDmTableInfoMpam1B; + break; + case ACPI_MPAM_LOCATION_TYPE_SMMU: + InfoTable = AcpiDmTableInfoMpam1C; + break; + case ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE: + InfoTable = AcpiDmTableInfoMpam1D; + break; + case ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE: + InfoTable = AcpiDmTableInfoMpam1E; + break; + case ACPI_MPAM_LOCATION_TYPE_INTERCONNECT: + InfoTable = AcpiDmTableInfoMpam1F; + break; + case ACPI_MPAM_LOCATION_TYPE_UNKNOWN: + InfoTable = AcpiDmTableInfoMpam1G; + default: + AcpiOsPrintf ("\n**** Unknown MPAM locator type 0x%X\n", + MpamResourceNode->LocatorType); + return; + } + + /* Subtable: MSC Resource Locator(s) */ + TempOffset += ACPI_OFFSET(ACPI_MPAM_RESOURCE_NODE, Locator); + Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->Locator, + sizeof(ACPI_MPAM_RESOURCE_LOCATOR), InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Get the number of functional dependencies of an RIS */ + TempOffset += sizeof(ACPI_MPAM_RESOURCE_LOCATOR); + Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->NumFunctionalDeps, + sizeof(UINT32), AcpiDmTableInfoMpam1Deps); + if (ACPI_FAILURE (Status)) + { + return; + } + + TempOffset += sizeof(UINT32); + MpamFunctionalDependency = ACPI_ADD_PTR (ACPI_MPAM_FUNC_DEPS, MpamResourceNode, + sizeof(ACPI_MPAM_RESOURCE_NODE)); + /* Subtable: MSC functional dependencies */ + for (UINT32 funcDep = 0; funcDep < MpamResourceNode->NumFunctionalDeps; funcDep++) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (sizeof(ACPI_MPAM_FUNC_DEPS), 0, + &MpamResourceNode->NumFunctionalDeps, 0, AcpiDmTableInfoMpam2); + Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamFunctionalDependency, + sizeof(ACPI_MPAM_FUNC_DEPS), AcpiDmTableInfoMpam2); + if (ACPI_FAILURE (Status)) + { + return; + } + TempOffset += sizeof(ACPI_MPAM_FUNC_DEPS); + MpamFunctionalDependency++; + } + + AcpiOsPrintf ("\n\n"); + } + + } + + return; +} /******************************************************************************* * @@ -1276,6 +1473,54 @@ AcpiDmDumpMpst ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpMrrm + * + * PARAMETERS: Table - A MRRM table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a MRRM + * + ******************************************************************************/ + +void +AcpiDmDumpMrrm ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_MRRM_MEM_RANGE_ENTRY *Subtable; + UINT16 Offset = sizeof (ACPI_TABLE_MRRM); + + /* Main table */ + + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMrrm); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables (all are same type) */ + + Subtable = ACPI_ADD_PTR (ACPI_MRRM_MEM_RANGE_ENTRY, Table, Offset); + while (Offset < Table->Length) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Header.Length, AcpiDmTableInfoMrrm0); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += Subtable->Header.Length; + Subtable = ACPI_ADD_PTR (ACPI_MRRM_MEM_RANGE_ENTRY, Subtable, + Subtable->Header.Length); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpMsct * * PARAMETERS: Table - A MSCT table @@ -1419,7 +1664,7 @@ AcpiDmDumpNfit ( /* Has a variable number of 64-bit addresses at the end */ InfoTable = AcpiDmTableInfoNfit6; - FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64); + FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS); break; case ACPI_NFIT_TYPE_CAPABILITIES: /* ACPI 6.0A */ @@ -1473,12 +1718,12 @@ AcpiDmDumpNfit ( case ACPI_NFIT_TYPE_SMBIOS: Length = Subtable->Length - - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); + sizeof (ACPI_NFIT_SMBIOS); if (Length) { Status = AcpiDmDumpTable (Table->Length, - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), + sizeof (ACPI_NFIT_SMBIOS), SmbiosInfo, Length, AcpiDmTableInfoNfit3a); if (ACPI_FAILURE (Status)) @@ -1521,410 +1766,6 @@ NextSubtable: /******************************************************************************* * - * FUNCTION: AcpiDmDumpNhlt - * - * PARAMETERS: Table - A NHLT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of an NHLT. - * - ******************************************************************************/ - -void -AcpiDmDumpNhlt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset; - UINT32 TableLength = Table->Length; - UINT32 EndpointCount; - UINT8 FormatsCount; - ACPI_NHLT_ENDPOINT *Subtable; - ACPI_NHLT_FORMAT_CONFIG *FormatSubtable; - ACPI_TABLE_NHLT *InfoTable; - UINT32 CapabilitiesSize; - UINT32 i; - UINT32 j; - UINT32 EndpointEndOffset; - UINT8 ConfigType = 0; - UINT8 ArrayType; - UINT8 MicrophoneCount; - ACPI_NHLT_VENDOR_MIC_COUNT *MicCount; - ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A *DevSpecific; - ACPI_NHLT_FORMATS_CONFIG *FormatsConfig; - ACPI_NHLT_DEVICE_INFO_COUNT *Count; - ACPI_NHLT_DEVICE_INFO *DeviceInfo; - ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B *Capabilities; - - - /* Main table */ - - AcpiOsPrintf (" /* Main table */\n"); - - Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNhlt); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Get the Endpoint Descriptor Count */ - - InfoTable = ACPI_ADD_PTR (ACPI_TABLE_NHLT, Table, 0); - EndpointCount = InfoTable->EndpointCount; - - /* Subtables */ - - Offset = sizeof (ACPI_TABLE_NHLT); - - while (Offset < TableLength) - { - /* A variable number of Endpoint Descriptors - process each */ - - for (i = 0; i < EndpointCount; i++) - { - /* Do the Endpoint Descriptor table */ - - Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); - - /* Check for endpoint descriptor length beyond end-of-table */ - - if (Subtable->DescriptorLength > TableLength) - { - Offset += 1; - AcpiOsPrintf ("\n /* Endpoint Descriptor Length larger than" - " table size: %X, table %X, adjusting table offset (+1) */\n", - Subtable->DescriptorLength, TableLength); - - Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); - } - - AcpiOsPrintf ("\n /* Endpoint Descriptor #%u */\n", i+1); - Status = AcpiDmDumpTable (TableLength, Offset, Subtable, - Subtable->DescriptorLength, AcpiDmTableInfoNhlt0); - if (ACPI_FAILURE (Status)) - { - return; - } - - EndpointEndOffset = Subtable->DescriptorLength + Offset; - - /* Check for endpoint descriptor beyond end-of-table */ - - if (Subtable->DescriptorLength > TableLength) - { - AcpiOsPrintf ("\n /* Endpoint Descriptor Length larger than table size: %X, table %X */\n", - Subtable->DescriptorLength, TableLength); - } - - Offset += sizeof (ACPI_NHLT_ENDPOINT); - Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); - - /* Do the Device Specific table */ - - AcpiOsPrintf ("\n /* Endpoint Device_Specific_Config table */\n"); - DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); - CapabilitiesSize = DevSpecific->CapabilitiesSize; - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b); - if (ACPI_FAILURE (Status)) - { - return; - } - - ArrayType = 0; - - /* Different subtables based upon capabilities_size */ - - switch (CapabilitiesSize) - { - case 0: - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); - break; - - case 1: - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C), AcpiDmTableInfoNhlt5c); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C); - break; - - case 2: - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt5); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG); - break; - - case 3: - default: - /* Extract the ConfigType and ArrayType */ - - ConfigType = DevSpecific->ConfigType; - ArrayType = DevSpecific->ArrayType; - - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A), AcpiDmTableInfoNhlt5a); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Capabilities Size == 3 */ - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A); - break; - - case 7: - ConfigType = DevSpecific->ConfigType; - Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); - DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); - - AcpiOsPrintf ("\n /* Render Feedback Device-Specific table */\n"); - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt5); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Capabilities Size = 7 */ - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG); - - if (ConfigType == ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK) - { - Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); - DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); - - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt6b); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG); - } - break; - } - - /* Check for a vendor-defined mic array */ - - if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY) - { - if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED) - { - /* Vendor-defined microphone array; get the microphone count first */ - - AcpiOsPrintf ("\n /* Vendor-defined microphone count */\n"); - MicCount = ACPI_ADD_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Table, Offset); - MicrophoneCount = MicCount->MicrophoneCount; - - Status = AcpiDmDumpTable (TableLength, Offset, MicCount, - sizeof (ACPI_NHLT_VENDOR_MIC_COUNT), AcpiDmTableInfoNhlt6a); - Offset += sizeof (ACPI_NHLT_VENDOR_MIC_COUNT); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Get the vendor microphone config structure(s) */ - - for (j = 0; j < MicrophoneCount; j++) - { - AcpiOsPrintf ("\n /* Vendor-defined microphone array #%u*/\n", j+1); - DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset); - - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG), AcpiDmTableInfoNhlt6); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG); - } - - /* Check for Microphone SNR and sensitivity extension */ - - if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK) == ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT) - { - AcpiOsPrintf ("\n /* Microphone SNR and sensitivity array */\n"); - DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset); - - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION), AcpiDmTableInfoNhlt9); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION); - } - } - } - - /* Do the Formats_Config table - starts with the FormatsCount field */ - - FormatsConfig = ACPI_ADD_PTR (ACPI_NHLT_FORMATS_CONFIG, Table, Offset); - FormatsCount = FormatsConfig->FormatsCount; - - AcpiOsPrintf ("\n /* Formats_Config table */\n"); - - /* Dump the FormatsCount value */ - - if (FormatsCount > 0) - { - Status = AcpiDmDumpTable (TableLength, Offset, FormatsConfig, - sizeof (ACPI_NHLT_FORMATS_CONFIG), AcpiDmTableInfoNhlt4); - if (ACPI_FAILURE (Status)) - { - return; - } - } - Offset += sizeof (ACPI_NHLT_FORMATS_CONFIG); - - /* A variable number of Format_Config Descriptors - process each */ - - for (j = 0; j < FormatsCount; j++) - { - FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset); - CapabilitiesSize = FormatSubtable->CapabilitySize; - - /* Do the Wave_extensible struct */ - - AcpiOsPrintf ("\n /* Wave_Format_Extensible table #%u */\n", j+1); - Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable, - sizeof (ACPI_NHLT_FORMAT_CONFIG), AcpiDmTableInfoNhlt3); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += sizeof (ACPI_NHLT_FORMAT_CONFIG); - - if (CapabilitiesSize > 0) - { - UINT8* CapabilitiesBuf = ACPI_ADD_PTR (UINT8, Table, Offset); - /* Do the Capabilities array (of bytes) */ - - AcpiOsPrintf ("\n /* Specific_Config table #%u */\n", j+1); - - Status = AcpiDmDumpTable (TableLength, Offset, CapabilitiesBuf, - CapabilitiesSize, AcpiDmTableInfoNhlt3a); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += CapabilitiesSize; /* + sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); */ - } - - } /* for (j = 0; j < FormatsCount; j++) */ - - /* - * If we are not done with the current Endpoint yet, then there must be - * some non documented structure(s) yet to be processed. First, get - * the count of such structure(s). - */ - if (Offset < EndpointEndOffset) - { - AcpiOsPrintf ("\n /* Structures that are not part of NHLT spec */\n"); - Count = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_INFO_COUNT, Table, Offset); - Status = AcpiDmDumpTable (TableLength, Offset, Count, - sizeof (ACPI_NHLT_DEVICE_INFO_COUNT), AcpiDmTableInfoNhlt7); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_NHLT_DEVICE_INFO_COUNT); - - /* Variable number of device structures */ - - for (j = 0; j < Count->StructureCount; j++) - { - DeviceInfo = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_INFO, Table, Offset); - AcpiOsPrintf ("\n /* Device Info structure #%u (not part of NHLT spec) */\n", j+1); - - /* - * Dump the following Device Info fields: - * 1) Device ID - * 2) Device Instance ID - * 3) Device Port ID - */ - Status = AcpiDmDumpTable (TableLength, Offset, DeviceInfo, - sizeof (ACPI_NHLT_DEVICE_INFO), AcpiDmTableInfoNhlt7a); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += sizeof (ACPI_NHLT_DEVICE_INFO); - } - - /* - * Check that the current offset is not beyond the end of - * this endpoint descriptor. If it is not, print those - * undocumented bytes. - */ - if (Offset < EndpointEndOffset) - { - /* Unknown data at the end of the Endpoint */ - UINT32 size = EndpointEndOffset - Offset; - UINT8* buffer = ACPI_ADD_PTR (UINT8, Table, Offset); - AcpiOsPrintf ("\n /* Unknown data at the end of the Endpoint, size: %X */\n", size); - Status = AcpiDmDumpTable (TableLength, Offset, buffer, - size, AcpiDmTableInfoNhlt7b); - Offset = EndpointEndOffset; - } - - /* Should be at the end of the Endpoint structure. */ - } - - } /* for (i = 0; i < EndpointCount; i++) */ - - - /* - * Done with all of the Endpoint Descriptors, Emit the table terminator - * (if such a legacy structure is present -- not in NHLT specification) - */ - if (Offset < TableLength) - { - Capabilities = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B, Table, Offset); - AcpiOsPrintf ("\n/* Terminating specific config (not part of NHLT spec) */\n"); - - Status = AcpiDmDumpTable (TableLength, Offset, Capabilities, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); - - if (Capabilities->CapabilitiesSize > 0) - { - UINT32 remainingBytes = TableLength - Offset; - UINT8* buffer = ACPI_ADD_PTR (UINT8, Table, Offset); - - if (remainingBytes != Capabilities->CapabilitiesSize) - AcpiOsPrintf ("\n/* Incorrect config size, should be %X, is %X */\n", - Capabilities->CapabilitiesSize, remainingBytes); - Status = AcpiDmDumpTable (TableLength, Offset, buffer, - remainingBytes, AcpiDmTableInfoNhlt3a); - } - } - - return; - } -} - - -/******************************************************************************* - * * FUNCTION: AcpiDmDumpPcct * * PARAMETERS: Table - A PCCT table @@ -2101,12 +1942,15 @@ AcpiDmDumpPhat ( ACPI_DMTABLE_INFO *InfoTable; ACPI_PHAT_HEADER *Subtable; ACPI_PHAT_VERSION_DATA *VersionData; + ACPI_PHAT_HEALTH_DATA *HealthData; UINT32 RecordCount; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_PHAT); + UINT32 OriginalOffset; UINT32 SubtableLength; UINT32 PathLength; UINT32 VendorLength; + UINT16 RecordType; Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, sizeof (ACPI_TABLE_PHAT)); @@ -2116,13 +1960,16 @@ AcpiDmDumpPhat ( /* Common subtable header */ AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, 0, Subtable, + Status = AcpiDmDumpTable (Length, Offset, Subtable, sizeof (ACPI_PHAT_HEADER), AcpiDmTableInfoPhatHdr); if (ACPI_FAILURE (Status)) { return; } + DbgPrint (ASL_DEBUG_OUTPUT, "\n/* %u, Subtable->Type %X */\n", + __LINE__, Subtable->Type); + switch (Subtable->Type) { case ACPI_PHAT_TYPE_FW_VERSION_DATA: @@ -2139,35 +1986,69 @@ AcpiDmDumpPhat ( default: - AcpiOsPrintf ("\n**** Unknown PHAT subtable type 0x%X\n\n", + DbgPrint (ASL_DEBUG_OUTPUT, "\n**** Unknown PHAT subtable type 0x%X\n\n", Subtable->Type); return; } - Status = AcpiDmDumpTable (Length, 0, Subtable, + Status = AcpiDmDumpTable (Length, Offset, Subtable, SubtableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; } + Offset += SubtableLength; + + OriginalOffset = Offset; switch (Subtable->Type) { case ACPI_PHAT_TYPE_FW_VERSION_DATA: VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA, Subtable); RecordCount = VersionData->ElementCount; - while (RecordCount) + RecordType = *ACPI_CAST_PTR (UINT8, Subtable); + + /* + * Skip past a zero-valued block (not part of the ACPI PHAT specification). + * First, check for a zero length record and a zero element count + */ + if (!VersionData->Header.Length && !VersionData->ElementCount) { - Status = AcpiDmDumpTable (Length, Offset, - ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_VERSION_DATA)), + while (RecordType == 0) + { + Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, Offset); + RecordType = *ACPI_CAST_PTR (UINT8, Subtable); + RecordCount = VersionData->ElementCount; + Offset += 1; + } + + Offset -= 1; + AcpiOsPrintf ("\n/* Warning: Block of zeros found above starting at Offset %X Length %X */\n" + "/* (not compliant to PHAT specification -- ignoring block) */\n", + OriginalOffset - 12, Offset - OriginalOffset + 12); + } + + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, RecordCount: %X, Offset %X, SubtableLength %X */\n", + __LINE__, RecordCount, Offset, SubtableLength); + + /* Emit each of the version elements */ + + while (RecordCount && VersionData->Header.Length) + { + AcpiOsPrintf ("\n/* Version Element #%Xh Offset %Xh */\n\n", + VersionData->ElementCount - RecordCount + 1, Offset); + + Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, Offset); + Status = AcpiDmDumpTable (Length, Offset, Subtable, sizeof (ACPI_PHAT_VERSION_ELEMENT), AcpiDmTableInfoPhat0a); if (ACPI_FAILURE (Status)) { return; } + Offset += sizeof (ACPI_PHAT_VERSION_ELEMENT); RecordCount--; } @@ -2175,28 +2056,64 @@ AcpiDmDumpPhat ( case ACPI_PHAT_TYPE_FW_HEALTH_DATA: - /* account for the null terminator */ + HealthData = ACPI_CAST_PTR (ACPI_PHAT_HEALTH_DATA, Subtable); + PathLength = Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA); + VendorLength = 0; - PathLength = strlen (ACPI_ADD_PTR (char, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA))) + 1; - Status = AcpiDmDumpTable (Length, Offset, - ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)), - PathLength, AcpiDmTableInfoPhat1a); - if (ACPI_FAILURE (Status)) + /* An offset of 0 should be ignored */ + if (HealthData->DeviceSpecificOffset != 0) { - return; + if (HealthData->DeviceSpecificOffset > Subtable->Length) + { + AcpiOsPrintf ("\n/* Warning: Oversized device-specific data offset %X */\n" + "/* (maximum is %X -- ignoring device-specific data) */\n", + HealthData->DeviceSpecificOffset, Subtable->Length); + } + else if (HealthData->DeviceSpecificOffset < sizeof (ACPI_PHAT_HEALTH_DATA)) + { + AcpiOsPrintf ("\n/* Warning: Undersized device-specific data offset %X */\n" + "/* (minimum is %X -- ignoring device-specific data) */\n", + HealthData->DeviceSpecificOffset, (UINT8) sizeof (ACPI_PHAT_HEALTH_DATA)); + } + else + { + PathLength = HealthData->DeviceSpecificOffset - sizeof (ACPI_PHAT_HEALTH_DATA); + VendorLength = Subtable->Length - HealthData->DeviceSpecificOffset; + } } - /* Get vendor data - data length is the remaining subtable length */ + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, PathLength %X, Offset %X */\n", + __LINE__, PathLength, Offset); - VendorLength = - Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength; - Status = AcpiDmDumpTable (Length, 0, - ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength), - VendorLength, AcpiDmTableInfoPhat1b); - if (ACPI_FAILURE (Status)) + if (PathLength) { - return; + Status = AcpiDmDumpTable (Length, Offset, + ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)), + PathLength, AcpiDmTableInfoPhat1a); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += PathLength; + } + + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, VendorLength %X, Offset %X */\n", + __LINE__, VendorLength, Offset); + + if (VendorLength) + { + Status = AcpiDmDumpTable (Length, Offset, + ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, HealthData->DeviceSpecificOffset), + VendorLength, AcpiDmTableInfoPhat1b); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += VendorLength; } + break; default: @@ -2208,9 +2125,12 @@ AcpiDmDumpPhat ( /* Next subtable */ - Offset += Subtable->Length; - Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, - Subtable->Length); + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, Bottom of main loop: Offset %X, " + "Subtable->Length %X, Table->Length %X */\n", + __LINE__, Offset, Subtable->Length, Table->Length); + + Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, + Offset); } } @@ -2523,6 +2443,60 @@ AcpiDmDumpPrmt ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpRas2 + * + * PARAMETERS: Table - A RAS2 table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a Ras2. This is a variable-length + * table that contains an open-ended number of the RAS2 PCC + * descriptors at the end of the table. + * + ******************************************************************************/ + +void +AcpiDmDumpRas2 ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_RAS2_PCC_DESC *Subtable; + UINT32 Length = Table->Length; + UINT32 Offset = sizeof (ACPI_TABLE_RAS2); + + + /* Main table */ + + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRas2); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables - RAS2 PCC descriptor list */ + + Subtable = ACPI_ADD_PTR (ACPI_RAS2_PCC_DESC, Table, Offset); + while (Offset < Table->Length) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset, Subtable, + sizeof (ACPI_RAS2_PCC_DESC), AcpiDmTableInfoRas2PccDesc); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Point to next subtable */ + + Offset += sizeof (ACPI_RAS2_PCC_DESC); + Subtable = ACPI_ADD_PTR (ACPI_RAS2_PCC_DESC, Subtable, + sizeof (ACPI_RAS2_PCC_DESC)); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpRgrt * * PARAMETERS: Table - A RGRT table @@ -2563,6 +2537,270 @@ AcpiDmDumpRgrt ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpRhct + * + * PARAMETERS: Table - A RHCT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a RHCT. + * + ******************************************************************************/ + +void +AcpiDmDumpRhct ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_RHCT_NODE_HEADER *Subtable; + ACPI_RHCT_HART_INFO *RhctHartInfo; + ACPI_RHCT_ISA_STRING *RhctIsaString; + ACPI_RHCT_CMO_NODE *RhctCmoNode; + ACPI_RHCT_MMU_NODE *RhctMmuNode; + UINT32 Length = Table->Length; + UINT8 SubtableOffset, IsaPadOffset; + UINT32 Offset = sizeof (ACPI_TABLE_RHCT); + UINT32 i; + + /* Main table */ + + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRhct); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables */ + + while (Offset < Table->Length) + { + AcpiOsPrintf ("\n"); + + /* Common subtable header */ + + Subtable = ACPI_ADD_PTR (ACPI_RHCT_NODE_HEADER, Table, Offset); + if (Subtable->Length < sizeof (ACPI_RHCT_NODE_HEADER)) + { + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoRhctNodeHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + Length = sizeof (ACPI_RHCT_NODE_HEADER); + + if (Subtable->Length < Length) + { + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } + SubtableOffset = (UINT8) Length; + + switch (Subtable->Type) + { + case ACPI_RHCT_NODE_TYPE_HART_INFO: + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset), + sizeof (ACPI_RHCT_HART_INFO), AcpiDmTableInfoRhctHartInfo1); + + RhctHartInfo = ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset); + + if ((UINT16)(Subtable->Length - SubtableOffset) < + (UINT16)(RhctHartInfo->NumOffsets * 4)) + { + AcpiOsPrintf ("Invalid number of offsets\n"); + return; + } + SubtableOffset += sizeof (ACPI_RHCT_HART_INFO); + for (i = 0; i < RhctHartInfo->NumOffsets; i++) + { + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + ACPI_ADD_PTR (UINT32, Subtable, SubtableOffset), + 4, AcpiDmTableInfoRhctHartInfo2); + if (ACPI_FAILURE (Status)) + { + return; + } + + SubtableOffset += 4; + } + break; + + case ACPI_RHCT_NODE_TYPE_ISA_STRING: + RhctIsaString = ACPI_ADD_PTR (ACPI_RHCT_ISA_STRING, Subtable, SubtableOffset); + IsaPadOffset = (UINT8) (SubtableOffset + 2 + RhctIsaString->IsaLength); + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + RhctIsaString, RhctIsaString->IsaLength, AcpiDmTableInfoRhctIsa1); + if (Subtable->Length > IsaPadOffset) + { + Status = AcpiDmDumpTable (Table->Length, Offset + IsaPadOffset, + ACPI_ADD_PTR (UINT8, Subtable, IsaPadOffset), + (Subtable->Length - IsaPadOffset), AcpiDmTableInfoRhctIsaPad); + } + + break; + + case ACPI_RHCT_NODE_TYPE_CMO: + RhctCmoNode = ACPI_ADD_PTR (ACPI_RHCT_CMO_NODE, Subtable, SubtableOffset); + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + RhctCmoNode, 4, AcpiDmTableInfoRhctCmo1); + break; + + case ACPI_RHCT_NODE_TYPE_MMU: + RhctMmuNode = ACPI_ADD_PTR (ACPI_RHCT_MMU_NODE, Subtable, SubtableOffset); + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + RhctMmuNode, 2, AcpiDmTableInfoRhctMmu1); + break; + + default: + break; + } + + /* Point to next subtable */ + + Offset += Subtable->Length; + } +} + +/******************************************************************************* + * + * FUNCTION: AcpiDmDumpRimt + * + * PARAMETERS: Table - A RIMT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a RIMT. + * + ******************************************************************************/ + +void +AcpiDmDumpRimt ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_RIMT_PLATFORM_DEVICE *PlatNode; + ACPI_RIMT_PCIE_RC *PcieNode; + ACPI_RIMT_NODE *Subtable; + ACPI_STATUS Status; + UINT32 Length = Table->Length; + UINT16 SubtableOffset; + UINT32 NodeOffset; + UINT16 i; + UINT32 Offset = sizeof (ACPI_TABLE_RIMT); + + /* Main table */ + + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRimt); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Subtables */ + + while (Offset < Table->Length) + { + AcpiOsPrintf ("\n"); + + /* Common subtable header */ + + Subtable = ACPI_ADD_PTR (ACPI_RIMT_NODE, Table, Offset); + if (Subtable->Length < sizeof (ACPI_RIMT_NODE)) + { + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoRimtNodeHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + Length = sizeof (ACPI_RIMT_NODE); + + if (Subtable->Length < Length) + { + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } + SubtableOffset = (UINT16) Length; + + switch (Subtable->Type) + { + case ACPI_RIMT_NODE_TYPE_IOMMU: + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_RIMT_IOMMU, Subtable, SubtableOffset), + sizeof (ACPI_RIMT_IOMMU), AcpiDmTableInfoRimtIommu); + + break; + + case ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX: + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_RIMT_PCIE_RC, Subtable, SubtableOffset), + sizeof (ACPI_RIMT_PCIE_RC), AcpiDmTableInfoRimtPcieRc); + + PcieNode = ACPI_ADD_PTR (ACPI_RIMT_PCIE_RC, Subtable, SubtableOffset); + + /* Dump the ID mappings */ + NodeOffset = PcieNode->IdMappingOffset; + for (i = 0; i < PcieNode->NumIdMappings; i++) + { + AcpiOsPrintf ("\n"); + Length = sizeof (ACPI_RIMT_ID_MAPPING); + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_RIMT_ID_MAPPING, Subtable, NodeOffset), + Length, AcpiDmTableInfoRimtIdMapping); + if (ACPI_FAILURE (Status)) + { + return; + } + + NodeOffset += Length; + } + break; + + case ACPI_RIMT_NODE_TYPE_PLAT_DEVICE: + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable, SubtableOffset), + sizeof (ACPI_RIMT_PLATFORM_DEVICE), AcpiDmTableInfoRimtPlatDev); + PlatNode = ACPI_ADD_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable, SubtableOffset); + + /* Dump the ID mappings */ + NodeOffset = PlatNode->IdMappingOffset; + for (i = 0; i < PlatNode->NumIdMappings; i++) + { + AcpiOsPrintf ("\n"); + Length = sizeof (ACPI_RIMT_ID_MAPPING); + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_RIMT_ID_MAPPING, Subtable, NodeOffset), + Length, AcpiDmTableInfoRimtIdMapping); + if (ACPI_FAILURE (Status)) + { + return; + } + + NodeOffset += Length; + } + break; + + default: + break; + } + + /* Point to next subtable */ + + Offset += Subtable->Length; + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpS3pt * * PARAMETERS: Table - A S3PT table diff --git a/sys/contrib/dev/acpica/common/dmtbdump3.c b/sys/contrib/dev/acpica/common/dmtbdump3.c index d210b93170d5..41ae6a9887bf 100644 --- a/sys/contrib/dev/acpica/common/dmtbdump3.c +++ b/sys/contrib/dev/acpica/common/dmtbdump3.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -177,7 +177,8 @@ AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table) { - (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, + (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), + (void *) ((UINT8 *)Table + sizeof (*Table)), Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); } @@ -343,6 +344,11 @@ AcpiDmDumpSrat ( InfoTable = AcpiDmTableInfoSrat6; break; + case ACPI_SRAT_TYPE_RINTC_AFFINITY: + + InfoTable = AcpiDmTableInfoSrat7; + break; + default: AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", Subtable->Type); diff --git a/sys/contrib/dev/acpica/common/dmtbinfo.c b/sys/contrib/dev/acpica/common/dmtbinfo.c index 3954fc90eed8..937ad013f079 100644 --- a/sys/contrib/dev/acpica/common/dmtbinfo.c +++ b/sys/contrib/dev/acpica/common/dmtbinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/common/dmtbinfo1.c b/sys/contrib/dev/acpica/common/dmtbinfo1.c index 8ce79320db3b..49c0f6f2a31c 100644 --- a/sys/contrib/dev/acpica/common/dmtbinfo1.c +++ b/sys/contrib/dev/acpica/common/dmtbinfo1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -287,6 +287,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorError[] = ACPI_DMT_TERMINATOR }; +/* 3: Vendor Defined V2 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorV2Error[] = +{ + {ACPI_DMT_UINT64, ACPI_AEST3A_OFFSET (AcpiHid), "ACPI HID", 0}, + {ACPI_DMT_UINT32, ACPI_AEST3A_OFFSET (AcpiUid), "ACPI UID", 0}, + {ACPI_DMT_BUF16, ACPI_AEST3A_OFFSET (VendorSpecificData), "Vendor Specific Data", 0}, + ACPI_DMT_TERMINATOR +}; + /* 4: Gic Error */ ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[] = @@ -296,6 +306,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[] = ACPI_DMT_TERMINATOR }; +/* 5: PCIe Error */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestPCIeError[] = +{ + {ACPI_DMT_UINT32, ACPI_AEST5_OFFSET (IortNodeReference), "Iort Node Reference", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 6: Proxy Error */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestProxyError[] = +{ + {ACPI_DMT_UINT64, ACPI_AEST6_OFFSET (NodeAddress), "Proxy Node Address", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Common AEST structures for subtables */ + +#define ACPI_DM_AEST_INTERFACE_COMMON(a) \ + {ACPI_DMT_UINT32, ACPI_AEST0D##a##_OFFSET (Common.ErrorNodeDevice), "Arm Error Node Device", 0},\ + {ACPI_DMT_UINT32, ACPI_AEST0D##a##_OFFSET (Common.ProcessorAffinity), "Processor Affinity", 0}, \ + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.ErrorGroupRegisterBase), "Err-Group Register Addr", 0}, \ + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.FaultInjectRegisterBase), "Err-Inject Register Addr", 0}, \ + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.InterruptConfigRegisterBase), "IRQ-Config Register Addr", 0}, + /* AestXface: Node Interface Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[] = @@ -314,6 +349,60 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[] = ACPI_DMT_TERMINATOR }; +/* AestXface: Node Interface Structure V2 Header */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXfaceHeader[] = +{ + {ACPI_DMT_AEST_XFACE, ACPI_AEST0DH_OFFSET (Type), "Interface Type", 0}, + {ACPI_DMT_UINT8, ACPI_AEST0DH_OFFSET (GroupFormat), "Group Format", 0}, + {ACPI_DMT_UINT16, ACPI_AEST0DH_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (Flags), "Flags (decoded below)", 0}, + {ACPI_DMT_FLAG0, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Shared Interface", 0}, + {ACPI_DMT_FLAG1, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Clear MISCx Registers", 0}, + {ACPI_DMT_FLAG2, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Error Node Device Valid", 0}, + {ACPI_DMT_FLAG3, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Affinity Type", 0}, + {ACPI_DMT_FLAG4, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Error group Address Valid", 0}, + {ACPI_DMT_FLAG5, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Fault Injection Address Valid", 0}, + {ACPI_DMT_FLAG7, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Interrupt Config Address valid", 0}, + {ACPI_DMT_UINT64, ACPI_AEST0DH_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (ErrorRecordIndex), "Error Record Index", 0}, + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (ErrorRecordCount), "Error Record Count", 0}, + ACPI_DMT_TERMINATOR +}; + +/* AestXface: Node Interface Structure V2 4K Group Format */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface4k[] = +{ + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (ErrorRecordImplemented),"Error Record Implemented", 0}, + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (ErrorStatusReporting), "Error Status Reporting", 0}, + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (AddressingMode), "Addressing Mode", 0}, + ACPI_DM_AEST_INTERFACE_COMMON(4) + ACPI_DMT_TERMINATOR +}; + +/* AestXface: Node Interface Structure V2 16K Group Format */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface16k[] = +{ + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0}, + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (ErrorStatusReporting[0]), "Error Status Reporting", 0}, + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (AddressingMode[0]), "Addressing Mode", 0}, + ACPI_DM_AEST_INTERFACE_COMMON(16) + ACPI_DMT_TERMINATOR +}; + +/* AestXface: Node Interface Structure V2 64K Group Format */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface64k[] = +{ + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0}, + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (ErrorStatusReporting[0]), "Error Status Reporting", 0}, + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (AddressingMode[0]), "Addressing Mode", 0}, + ACPI_DM_AEST_INTERFACE_COMMON(64) + ACPI_DMT_TERMINATOR +}; + /* AestXrupt: Node Interrupt Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[] = @@ -329,6 +418,20 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[] = }; +/* AestXrupt: Node Interrupt Structure V2 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXruptV2[] = +{ + {ACPI_DMT_AEST_XRUPT, ACPI_AEST0EA_OFFSET (Type), "Interrupt Type", 0}, + {ACPI_DMT_UINT16, ACPI_AEST0EA_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_AEST0EA_OFFSET (Flags), "Flags (decoded below)", 0}, + {ACPI_DMT_FLAG0, ACPI_AEST0EA_FLAG_OFFSET (Flags, 0), "Level Triggered", 0}, + {ACPI_DMT_UINT32, ACPI_AEST0EA_OFFSET (Gsiv), "Gsiv", 0}, + {ACPI_DMT_UINT32, ACPI_AEST0EA_OFFSET (Reserved1[0]), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + + /******************************************************************************* * * ASF - Alert Standard Format table (Signature "ASF!") @@ -435,6 +538,57 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] = /******************************************************************************* * + * ASPT - AMD Secure Processor table (Signature "ASPT") + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAspt[] = +{ + {ACPI_DMT_UINT32, ACPI_ASPT_OFFSET(NumEntries), "Number of Subtables", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Common Subtable header (one per Subtable) */ +ACPI_DMTABLE_INFO AcpiDmTableInfoAsptHdr[] = +{ + {ACPI_DMT_ASPT, ACPI_ASPTH_OFFSET(Type), "Type", 0}, + {ACPI_DMT_UINT16, ACPI_ASPTH_OFFSET(Length), "Length", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 0: ASPT Global Registers */ +ACPI_DMTABLE_INFO AcpiDmTableInfoAspt0[] = +{ + {ACPI_DMT_UINT32, ACPI_ASPT0_OFFSET(Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT0_OFFSET(FeatureRegAddr), "Feature Register Address", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT0_OFFSET(IrqEnRegAddr), "Interrupt Enable Register Address", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT0_OFFSET(IrqStRegAddr), "Interrupt Status Register Address", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1: ASPT SEV Mailbox Registers */ +ACPI_DMTABLE_INFO AcpiDmTableInfoAspt1[] = +{ + {ACPI_DMT_UINT8, ACPI_ASPT1_OFFSET(MboxIrqId), "Mailbox Interrupt ID", 0}, + {ACPI_DMT_UINT24, ACPI_ASPT1_OFFSET(Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT1_OFFSET(CmdRespRegAddr), "CmdResp Register Address", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT1_OFFSET(CmdBufLoRegAddr), "CmdBufAddr_Lo Register Address", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT1_OFFSET(CmdBufHiRegAddr), "CmdBufAddr_Hi Register Address", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 2: ASPT ACPI Maiblox Registers */ +ACPI_DMTABLE_INFO AcpiDmTableInfoAspt2[] = +{ + {ACPI_DMT_UINT32, ACPI_ASPT2_OFFSET(Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT2_OFFSET(CmdRespRegAddr), "CmdResp Register Address", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT2_OFFSET(Reserved2[0]), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ASPT2_OFFSET(Reserved2[1]), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/******************************************************************************* + * * BDAT - BIOS Data ACPI Table * ******************************************************************************/ @@ -494,6 +648,116 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] = ACPI_DMT_TERMINATOR }; +/******************************************************************************* + * + * CDAT - Coherent Device Attribute Table + * + ******************************************************************************/ + + /* Table header (not ACPI-compliant) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdatTableHdr[] = +{ + {ACPI_DMT_UINT32, ACPI_CDAT_OFFSET (Length), "CDAT Table Length", DT_LENGTH}, + {ACPI_DMT_UINT8, ACPI_CDAT_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT_OFFSET (Checksum), "Checksum", 0}, + {ACPI_DMT_UINT48, ACPI_CDAT_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_CDAT_OFFSET (Sequence), "Sequence", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Common subtable header */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdatHeader[] = +{ + {ACPI_DMT_CDAT, ACPI_CDATH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_CDATH_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_CDATH_OFFSET (Length), "Length", DT_LENGTH}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat0[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT0_OFFSET (DsmadHandle), "DSMAD Handle", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT0_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT0_OFFSET (DpaBaseAddress), "DPA Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT0_OFFSET (DpaLength), "DPA Length", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat1[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT1_OFFSET (Handle), "Handle", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT1_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT1_OFFSET (DataType), "Data Type", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT1_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT1_OFFSET (EntryBaseUnit), "Entry Base Unit", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT1_OFFSET (Entry[0]), "Entry0", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT1_OFFSET (Entry[1]), "Entry1", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT1_OFFSET (Entry[2]), "Entry2", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT1_OFFSET (Reserved2), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat2[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT2_OFFSET (DsmasHandle), "DSMAS Handle", 0}, + {ACPI_DMT_UINT24, ACPI_CDAT2_OFFSET (Reserved[3]), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT2_OFFSET (SideCacheSize), "Side Cache Size", 0}, + {ACPI_DMT_UINT32, ACPI_CDAT2_OFFSET (CacheAttributes), "Cache Attributes", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 3: Device Scoped Initiator Structure (DSIS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat3[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT3_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT3_OFFSET (Handle), "Handle", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT3_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat4[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT4_OFFSET (DsmasHandle), "DSMAS Handle", 0}, + {ACPI_DMT_UINT8, ACPI_CDAT4_OFFSET (MemoryType), "Memory Type", 0}, + {ACPI_DMT_UINT16, ACPI_CDAT4_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT4_OFFSET (DpaOffset), "DPA Offset", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT4_OFFSET (RangeLength), "DPA Range Length", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdat5[] = +{ + {ACPI_DMT_UINT8, ACPI_CDAT5_OFFSET (DataType), "Data Type", 0}, + {ACPI_DMT_UINT24, ACPI_CDAT5_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CDAT5_OFFSET (EntryBaseUnit), "Entry Base Unit", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Switch Scoped Latency and Bandwidth Entry (SSLBE) (For subtable 5 above) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCdatEntries[] = +{ + {ACPI_DMT_UINT16, ACPI_CDATE_OFFSET (PortxId), "Port X Id", 0}, + {ACPI_DMT_UINT16, ACPI_CDATE_OFFSET (PortyId), "Port Y Id", 0}, + {ACPI_DMT_UINT16, ACPI_CDATE_OFFSET (LatencyOrBandwidth), "Latency or Bandwidth", 0}, + {ACPI_DMT_UINT16, ACPI_CDATE_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * @@ -528,7 +792,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1[] = {ACPI_DMT_UINT32, ACPI_CEDT1_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_CEDT1_OFFSET (BaseHpa), "Window base address", 0}, {ACPI_DMT_UINT64, ACPI_CEDT1_OFFSET (WindowSize), "Window size", 0}, - {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveWays), "Interleave Members (2^n)", 0}, + {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveWays), "Interleave Members", 0}, {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveArithmetic), "Interleave Arithmetic", 0}, {ACPI_DMT_UINT16, ACPI_CEDT1_OFFSET (Reserved2), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_CEDT1_OFFSET (Granularity), "Granularity", 0}, @@ -544,6 +808,23 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1_te[] = ACPI_DMT_TERMINATOR }; +/* 2: CXL XOR Interleave Math Structure */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2[] = +{ + {ACPI_DMT_UINT16, ACPI_CEDT2_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_CEDT2_OFFSET (Hbig), "Interleave Granularity", 0}, + {ACPI_DMT_UINT8, ACPI_CEDT2_OFFSET (NrXormaps), "Xormap List Count", 0}, + {ACPI_DMT_UINT64, ACPI_CEDT2_OFFSET (XormapList), "First Xormap", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2_te[] = +{ + {ACPI_DMT_UINT64, ACPI_CEDT2_TE_OFFSET (Xormap), "Next Xormap", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * * CPEP - Corrected Platform Error Polling table @@ -730,7 +1011,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = { {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType), "Device Scope Type", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0}, ACPI_DMT_TERMINATOR @@ -743,7 +1025,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] = { {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Size), "Size (decoded below)", 0}, + {ACPI_DMT_FLAGS4_0, ACPI_DMAR0_FLAG_OFFSET (Size,0), "Size (pages, log2)", 0}, {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0}, {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0}, ACPI_DMT_TERMINATOR @@ -790,7 +1073,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[] = ACPI_DMT_TERMINATOR }; -/* 5: Hardware Unit Definition */ +/* 5: SoC Integrated Address Translation Cache */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar5[] = { @@ -800,6 +1083,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar5[] = ACPI_DMT_TERMINATOR }; +/* 6: SoC Integrated Device Property */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar6[] = +{ + {ACPI_DMT_UINT16, ACPI_DMAR6_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_DMAR6_OFFSET (Segment), "PCI Segment Number", 0}, + ACPI_DMT_TERMINATOR +}; + + /******************************************************************************* * * DRTM - Dynamic Root of Trust for Measurement table @@ -909,6 +1202,276 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] = /******************************************************************************* * + * ERDT - Enhanced Resource Director Technology table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdt[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_OFFSET (MaxClos), "Maximum supported CLOSID", 0}, + {ACPI_DMT_BUF24, ACPI_ERDT_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * ERDT - Common Subtable Header + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtHdr[] = +{ + {ACPI_DMT_ERDT, ACPI_ERDT_HDR_OFFSET (Type), "Type", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_HDR_OFFSET (Length), "Length", DT_LENGTH}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - ERDT Resource Management Domain Description subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtRmdd[] = +{ + {ACPI_DMT_UINT16, ACPI_ERDT_RMDD_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_ERDT_RMDD_FLAG_OFFSET (Flags,0), "L3 Domain", 0}, + {ACPI_DMT_FLAG1, ACPI_ERDT_RMDD_FLAG_OFFSET (Flags,0), "I/O L3 Domain", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_RMDD_OFFSET (IO_l3_Slices), "I/O L3 Slices", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_RMDD_OFFSET (IO_l3_Sets), "I/O L3 Sets", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_RMDD_OFFSET (IO_l3_Ways), "I/O L3 Ways", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_RMDD_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_RMDD_OFFSET (DomainId), "Domain ID", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_RMDD_OFFSET (MaxRmid), "Maximum supported RMID", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_RMDD_OFFSET (CregBase), "Control Register Base Address", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_RMDD_OFFSET (CregSize), "Control Register Base Size", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - CACD CPU Agent Collection Description subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCacd[] = +{ + {ACPI_DMT_UINT16, ACPI_ERDT_CACD_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CACD_OFFSET (DomainId), "Domain ID", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCacdX2apic[] = +{ + {ACPI_DMT_UINT32, 0, "X2ApicID", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - DACD Device Agent Collection Description subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacd[] = +{ + {ACPI_DMT_UINT16, ACPI_ERDT_DACD_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_DACD_OFFSET (DomainId), "Domain ID", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacdScope[] = +{ + {ACPI_DMT_UINT8, ACPI_ERDT_DACD_PATH_OFFSET (Header.Type), "PCIType", DT_OPTIONAL}, + {ACPI_DMT_UINT8, ACPI_ERDT_DACD_PATH_OFFSET (Header.Length), "Length", DT_OPTIONAL}, + {ACPI_DMT_UINT16, ACPI_ERDT_DACD_PATH_OFFSET (Segment), "Segment", DT_OPTIONAL}, + {ACPI_DMT_UINT8, ACPI_ERDT_DACD_PATH_OFFSET (Reserved), "Reserved", DT_OPTIONAL}, + {ACPI_DMT_UINT8, ACPI_ERDT_DACD_PATH_OFFSET (StartBus), "StartBus", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacdPath[] = +{ + {ACPI_DMT_UINT8, 0, "Path", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Cache Monitoring Registers for CPU Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCmrc[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_CMRC_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CMRC_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_CMRC_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_BUF11, ACPI_ERDT_CMRC_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_CMRC_OFFSET (CmtRegBase), "CMT Register Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CMRC_OFFSET (CmtRegSize), "CMT Register Size", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CMRC_OFFSET (ClumpSize), "Clump Size", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CMRC_OFFSET (ClumpStride), "Clump Stride", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_CMRC_OFFSET (UpScale), "Upscale factor", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Memory-bandwidth Monitoring Registers for CPU agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMmrc[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_MMRC_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_MMRC_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_MMRC_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_BUF11, ACPI_ERDT_MMRC_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_MMRC_OFFSET (RegBase), "MBM Register Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_MMRC_OFFSET (RegSize), "MBM Register Size", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_MMRC_OFFSET (CounterWidth), "MBM Counter Width", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_MMRC_OFFSET (UpScale), "Upscale factor", 0}, + {ACPI_DMT_UINT56, ACPI_ERDT_MMRC_OFFSET (Reserved3), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_MMRC_OFFSET (CorrFactorListLen), "Corr Factor List Length", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMmrcCorrFactor[] = +{ + {ACPI_DMT_UINT32, 0, "CorrFactor", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Memory-bandwidth Allocation Registers for CPU agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMarc[] = +{ + {ACPI_DMT_UINT16, ACPI_ERDT_MARC_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_MARC_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_MARC_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_UINT56, ACPI_ERDT_MARC_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_MARC_OFFSET (RegBaseOpt), "MBA Register Opt Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_MARC_OFFSET (RegBaseMin), "MBA Register Min Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_MARC_OFFSET (RegBaseMax), "MBA Register Max Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_MARC_OFFSET (MbaRegSize), "MBA Register Size", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_MARC_OFFSET (MbaCtrlRange), "MBA Control Range", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Cache Allocation Registers for CPU Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCarc[] = +{ + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Cache Monitoring Registers for Device Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCmrd[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_CMRD_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CMRD_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_CMRD_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_BUF11, ACPI_ERDT_CMRD_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_CMRD_OFFSET (RegBase), "CMRD Register Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CMRD_OFFSET (RegSize), "CMRD Register Size", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CMRD_OFFSET (CmtRegOff), "Register Offset", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CMRD_OFFSET (CmtClumpSize), "Clump Size", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_CMRD_OFFSET (UpScale), "Upscale factor", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - O Bandwidth Monitoring Registers for Device Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbrd[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_IBRD_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_IBRD_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_IBRD_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_BUF11, ACPI_ERDT_IBRD_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_IBRD_OFFSET (RegBase), "IBRD Register Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_IBRD_OFFSET (RegSize), "IBRD Register Size", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_IBRD_OFFSET (TotalBwOffset), "TotalBw Offset", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_IBRD_OFFSET (IOMissBwOffset), "IO Miss Offset", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_IBRD_OFFSET (TotalBwClump), "TotalBw Clump", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_IBRD_OFFSET (IOMissBwClump), "IO Miss Clump", 0}, + {ACPI_DMT_UINT56, ACPI_ERDT_IBRD_OFFSET (Reserved3), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_IBRD_OFFSET (CounterWidth), "Counter Width", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_IBRD_OFFSET (UpScale), "Upscale factor", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_IBRD_OFFSET (CorrFactorListLen), "Corr Factor List Length", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbrdCorrFactor[] = +{ + {ACPI_DMT_UINT32, 0, "CorrFactor", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - O bandwidth Allocation Registers for Device Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbad[] = +{ + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RMDD - Cache Allocation Registers for Device Agents subtable + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCard[] = +{ + {ACPI_DMT_UINT32, ACPI_ERDT_CARD_OFFSET (Reserved1), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CARD_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CARD_OFFSET (ContentionMask), "ContentionMask", 0}, + {ACPI_DMT_UINT8, ACPI_ERDT_CARD_OFFSET (IndexFn), "Register Index Function", 0}, + {ACPI_DMT_UINT56, ACPI_ERDT_CARD_OFFSET (Reserved2), "Register Index Function", 0}, + {ACPI_DMT_UINT64, ACPI_ERDT_CARD_OFFSET (RegBase), "CARD Register Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_ERDT_CARD_OFFSET (RegSize), "CARD Register Size", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CARD_OFFSET (CatRegOffset), "CARD Register Offset", 0}, + {ACPI_DMT_UINT16, ACPI_ERDT_CARD_OFFSET (CatRegBlockSize), "CARD Register Block Size", 0}, + + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * ERST - Error Record Serialization table * ******************************************************************************/ @@ -1387,7 +1950,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2[] = {ACPI_DMT_FLAGS4_8, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0}, {ACPI_DMT_FLAGS4_12, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0}, {ACPI_DMT_FLAGS16_16, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0}, - {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (Reserved2), "Reserved2", 0}, + {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (AddressMode), "Address Mode", 0}, {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles), "SMBIOS Handle #", 0}, ACPI_DMT_TERMINATOR }; diff --git a/sys/contrib/dev/acpica/common/dmtbinfo2.c b/sys/contrib/dev/acpica/common/dmtbinfo2.c index bac6a1d2a1d4..b7c6d3b8d536 100644 --- a/sys/contrib/dev/acpica/common/dmtbinfo2.c +++ b/sys/contrib/dev/acpica/common/dmtbinfo2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -313,6 +313,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[] = {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (MemoryFlags), "Memory Flags (decoded below)", 0}, {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Coherency", 0}, {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Device Attribute", 0}, + {ACPI_DMT_FLAG2, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Ensured Coherency of Accesses", 0}, ACPI_DMT_TERMINATOR }; @@ -412,6 +413,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[] = {ACPI_DMT_FLAG0, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "COHACC Override", 0}, {ACPI_DMT_FLAG1, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "HTTU Override", 0}, {ACPI_DMT_FLAG3, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "Proximity Domain Valid", 0}, + {ACPI_DMT_FLAG4, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "DeviceID Valid", 0}, {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (VatosAddress), "VATOS Address", 0}, {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Model), "Model", 0}, @@ -677,8 +679,6 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoLpit0[] = {ACPI_DMT_UINT64, ACPI_LPIT0_OFFSET (CounterFrequency), "Counter Frequency", 0}, ACPI_DMT_TERMINATOR }; - - /******************************************************************************* * * MADT - Multiple APIC Description Table and subtables @@ -863,6 +863,64 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] = {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0}, {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (SpeInterrupt), "SPE Overflow Interrupt", 0}, + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (TrbeInterrupt), "TRBE Interrupt", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 11: Generic Interrupt Controller (ACPI 5.0) - MADT revision 6 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11a[] = +{ + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (CpuInterfaceNumber), "CPU Interface Number", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0}, + {ACPI_DMT_FLAG1, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Performance Interrupt Trigger Mode", 0}, + {ACPI_DMT_FLAG2, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Virtual GIC Interrupt Trigger Mode", 0}, + {ACPI_DMT_FLAG3, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Online Capable", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicvBaseAddress), "Virtual GIC Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GichBaseAddress), "Hypervisor GIC Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (VgicInterrupt), "Virtual GIC Interrupt", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicrBaseAddress), "Redistributor Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ArmMpidr), "ARM MPIDR", 0}, + {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0}, + {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (SpeInterrupt), "SPE Overflow Interrupt", 0}, + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (TrbeInterrupt), "TRBE Interrupt", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 11: Generic Interrupt Controller (ACPI 5.0) - MADT revision 7 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11b[] = +{ + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (CpuInterfaceNumber), "CPU Interface Number", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0}, + {ACPI_DMT_FLAG1, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Performance Interrupt Trigger Mode", 0}, + {ACPI_DMT_FLAG2, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Virtual GIC Interrupt Trigger Mode", 0}, + {ACPI_DMT_FLAG3, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Online Capable", 0}, + {ACPI_DMT_FLAG4, ACPI_MADT11_FLAG_OFFSET (Flags,0), "GICR non-coherent", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicvBaseAddress), "Virtual GIC Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GichBaseAddress), "Hypervisor GIC Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (VgicInterrupt), "Virtual GIC Interrupt", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicrBaseAddress), "Redistributor Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ArmMpidr), "ARM MPIDR", 0}, + {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0}, + {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (SpeInterrupt), "SPE Overflow Interrupt", 0}, + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (TrbeInterrupt), "TRBE Interrupt", 0}, ACPI_DMT_TERMINATOR }; @@ -903,6 +961,18 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[] = ACPI_DMT_TERMINATOR }; +/* 14: Generic Redistributor (ACPI 5.1) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14a[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT14_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT14_FLAG_OFFSET (Flags,0), "GICR non-coherent", 0}, + {ACPI_DMT_UINT8, ACPI_MADT14_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_MADT14_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_MADT14_OFFSET (Length), "Length", 0}, + ACPI_DMT_TERMINATOR +}; + /* 15: Generic Translator (ACPI 6.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] = @@ -914,6 +984,17 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] = ACPI_DMT_TERMINATOR }; +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15a[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT15_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT15_FLAG_OFFSET (Flags,0), "GIC ITS non-coherent", 0}, + {ACPI_DMT_UINT8, ACPI_MADT15_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (TranslationId), "Translation ID", 0}, + {ACPI_DMT_UINT64, ACPI_MADT15_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (Reserved2), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + /* 16: Multiprocessor wakeup structure (ACPI 6.4) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[] = @@ -924,12 +1005,154 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[] = ACPI_DMT_TERMINATOR }; -/* 17: OEM data structure */ +/* 17: core interrupt controller */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt17[] = { + {ACPI_DMT_UINT8, ACPI_MADT17_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT32, ACPI_MADT17_OFFSET (ProcessorId), "ProcessorId", 0}, + {ACPI_DMT_UINT32, ACPI_MADT17_OFFSET (CoreId), "CoreId", 0}, + {ACPI_DMT_UINT32, ACPI_MADT17_OFFSET (Flags), "Flags", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 18: Legacy I/O interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt18[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT18_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT64, ACPI_MADT18_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT16, ACPI_MADT18_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT16, ACPI_MADT18_OFFSET (Cascade), "Cascade", 0}, + {ACPI_DMT_UINT64, ACPI_MADT18_OFFSET (CascadeMap), "CascadeMap", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 19: HT interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt19[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT19_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT64, ACPI_MADT19_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT16, ACPI_MADT19_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT64, ACPI_MADT19_OFFSET (Cascade), "Cascade", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 20: Extend I/O interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt20[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT20_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT20_OFFSET (Cascade), "Cascade", 0}, + {ACPI_DMT_UINT8, ACPI_MADT20_OFFSET (Node), "Node", 0}, + {ACPI_DMT_UINT64, ACPI_MADT20_OFFSET (NodeMap), "NodeMap", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 21: MSI controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt21[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT21_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT64, ACPI_MADT21_OFFSET (MsgAddress), "MsgAddress", 0}, + {ACPI_DMT_UINT32, ACPI_MADT21_OFFSET (Start), "Start", 0}, + {ACPI_DMT_UINT32, ACPI_MADT21_OFFSET (Count), "Count", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 22: BIO interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt22[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT22_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT64, ACPI_MADT22_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT16, ACPI_MADT22_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT16, ACPI_MADT22_OFFSET (Id), "Id", 0}, + {ACPI_DMT_UINT16, ACPI_MADT22_OFFSET (GsiBase), "GsiBase", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 23: LPC interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt23[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT23_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT64, ACPI_MADT23_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT16, ACPI_MADT23_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT8, ACPI_MADT23_OFFSET (Cascade), "Cascade", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 24: RINTC interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt24[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT24_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT24_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT24_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT64, ACPI_MADT24_OFFSET (HartId), "HartId", 0}, + {ACPI_DMT_UINT32, ACPI_MADT24_OFFSET (Uid), "Uid", 0}, + {ACPI_DMT_UINT32, ACPI_MADT24_OFFSET (ExtIntcId), "ExtIntcId", 0}, + {ACPI_DMT_UINT64, ACPI_MADT24_OFFSET (ImsicAddr), "ImsicAddr", 0}, + {ACPI_DMT_UINT32, ACPI_MADT24_OFFSET (ImsicSize), "ImsicSize", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 25: RISC-V IMSIC interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt25[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT25_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT16, ACPI_MADT25_OFFSET (NumIds), "NumIds", 0}, + {ACPI_DMT_UINT16, ACPI_MADT25_OFFSET (NumGuestIds), "NumGuestIds", 0}, + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (GuestIndexBits), "GuestIndexBits", 0}, + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (HartIndexBits), "HartIndexBits", 0}, + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (GroupIndexBits), "GroupIndexBits", 0}, + {ACPI_DMT_UINT8, ACPI_MADT25_OFFSET (GroupIndexShift), "GroupIndexShift", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 26: RISC-V APLIC interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt26[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT26_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT26_OFFSET (Id), "Id", 0}, + {ACPI_DMT_UINT32, ACPI_MADT26_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT64, ACPI_MADT26_OFFSET (HwId), "HwId", 0}, + {ACPI_DMT_UINT16, ACPI_MADT26_OFFSET (NumIdcs), "NumIdcs", 0}, + {ACPI_DMT_UINT16, ACPI_MADT26_OFFSET (NumSources), "NumSources", 0}, + {ACPI_DMT_UINT32, ACPI_MADT26_OFFSET (GsiBase), "GsiBase", 0}, + {ACPI_DMT_UINT64, ACPI_MADT26_OFFSET (BaseAddr), "BaseAddr", 0}, + {ACPI_DMT_UINT32, ACPI_MADT26_OFFSET (Size), "Size", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 27: RISC-V PLIC interrupt controller */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt27[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT27_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT27_OFFSET (Id), "Id", 0}, + {ACPI_DMT_UINT64, ACPI_MADT27_OFFSET (HwId), "HwId", 0}, + {ACPI_DMT_UINT16, ACPI_MADT27_OFFSET (NumIrqs), "NumIrqs", 0}, + {ACPI_DMT_UINT16, ACPI_MADT27_OFFSET (MaxPrio), "MaxPrio", 0}, + {ACPI_DMT_UINT32, ACPI_MADT27_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT32, ACPI_MADT27_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT64, ACPI_MADT27_OFFSET (BaseAddr), "BaseAddr", 0}, + {ACPI_DMT_UINT32, ACPI_MADT27_OFFSET (GsiBase), "GsiBase", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 128: OEM data structure */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt128[] = +{ {ACPI_DMT_RAW_BUFFER, 0, "OEM Data", 0}, - ACPI_DMT_TERMINATOR + ACPI_DMT_TERMINATOR }; /******************************************************************************* @@ -978,6 +1201,141 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] = ACPI_DMT_TERMINATOR }; +/******************************************************************************* + * + * MPAM - Memory System Resource Partitioning and Monitoring Tables + * Arm's DEN0065 MPAM ACPI 2.0. December 2022. + ******************************************************************************/ + +/* MPAM subtables */ + +/* 0: MPAM Resource Node Structure - A root MSC table. + * Arm's DEN0065 MPAM ACPI 2.0. Table 4: MPAM MSC node body. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam0[] = +{ + {ACPI_DMT_UINT16, ACPI_MPAM0_OFFSET (Length), "Length", 0}, + {ACPI_DMT_UINT8, ACPI_MPAM0_OFFSET (InterfaceType), "Interface type", 0}, + {ACPI_DMT_UINT8, ACPI_MPAM0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (Identifier), "Identifier", 0}, + {ACPI_DMT_UINT64, ACPI_MPAM0_OFFSET (BaseAddress), "Base address", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (MMIOSize), "MMIO size", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (OverflowInterrupt), "Overflow interrupt", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (OverflowInterruptFlags), "Overflow interrupt flags", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (Reserved1), "Reserved1", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (OverflowInterruptAffinity), "Overflow interrupt affinity", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (ErrorInterrupt), "Error interrupt", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (ErrorInterruptFlags), "Error interrupt flags", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (Reserved2), "Reserved2", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (ErrorInterruptAffinity), "Error interrupt affinity", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (MaxNrdyUsec), "MAX_NRDY_USEC", 0}, + {ACPI_DMT_NAME8, ACPI_MPAM0_OFFSET (HardwareIdLinkedDevice), "Hardware ID of linked device", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (InstanceIdLinkedDevice), "Instance ID of linked device", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (NumResourceNodes), "Number of resource nodes", 0}, + + ACPI_DMT_TERMINATOR +}; + +/* 1: MPAM Resource (RIS) Node Structure - A subtable of MSC Nodes. + * Arm's DEN0065 MPAM ACPI 2.0. Table 9: Resource node. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1[] = +{ + {ACPI_DMT_UINT32, ACPI_MPAM1_OFFSET (Identifier), "Identifier", 0}, + {ACPI_DMT_UINT8, ACPI_MPAM1_OFFSET (RISIndex), "RIS Index", 0}, + {ACPI_DMT_UINT16, ACPI_MPAM1_OFFSET (Reserved1), "Reserved1", 0}, + {ACPI_DMT_MPAM_LOCATOR, ACPI_MPAM1_OFFSET (LocatorType), "Locator type", 0}, + ACPI_DMT_TERMINATOR +}; + +/* An RIS field part of the RIS subtable */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1Deps[] = +{ + {ACPI_DMT_UINT32, 0, "Number of functional dependencies", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1A: MPAM Processor cache locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 13. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1A[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1A_OFFSET (CacheReference), "Cache reference", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1A_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1B: MPAM Memory locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 14. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1B[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1B_OFFSET (ProximityDomain), "Proximity domain", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1B_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1C: MPAM SMMU locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 15. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1C[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1C_OFFSET (SmmuInterface), "SMMU Interface", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1C_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1D: MPAM Memory-side cache locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 16. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1D[] = +{ + {ACPI_DMT_UINT56, ACPI_MPAM1D_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_MPAM1D_OFFSET (Level), "Level", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1D_OFFSET (Reference), "Reference", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1E: MPAM ACPI device locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 17. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1E[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1E_OFFSET (AcpiHwId), "ACPI Hardware ID", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1E_OFFSET (AcpiUniqueId), "ACPI Unique ID", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1F: MPAM Interconnect locator descriptor. A subtable of RIS. + * Arm's DEN0065 MPAM ACPI 2.0. Table 18. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1F[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1F_OFFSET (InterConnectDescTblOff), "Interconnect descriptor table offset", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1F_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1G: MPAM Locator structure. + * Arm's DEN0065 MPAM ACPI 2.0. Table 12. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1G[] = +{ + {ACPI_DMT_UINT64, ACPI_MPAM1G_OFFSET (Descriptor1), "Descriptor1", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM1G_OFFSET (Descriptor2), "Descriptor2", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 2: MPAM Functional dependency descriptor. + * Arm's DEN0065 MPAM ACPI 2.0. Table 10. + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoMpam2[] = +{ + {ACPI_DMT_UINT32, ACPI_MPAM2_OFFSET (Producer), "Producer", 0}, + {ACPI_DMT_UINT32, ACPI_MPAM2_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * @@ -1062,6 +1420,39 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] = /******************************************************************************* * + * MRRM - Memory Range and Region Mapping Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMrrm[] = +{ + {ACPI_DMT_UINT8, ACPI_MRRM_OFFSET (MaxMemRegion), "Max Memory Regions", 0}, + {ACPI_DMT_UINT8, ACPI_MRRM_OFFSET (Flags), "Region Assignment Type", 0}, + {ACPI_DMT_BUF26, ACPI_MRRM_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* MRRM Subtable */ + +/* 0: Memory Range entry */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoMrrm0[] = +{ + {ACPI_DMT_UINT16, ACPI_MRRM0_OFFSET (Header.Type), "Memory Range", 0}, + {ACPI_DMT_UINT16, ACPI_MRRM0_OFFSET (Header.Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_MRRM0_OFFSET (Reserved0), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_MRRM0_OFFSET (AddrBase), "System Address Base", 0}, + {ACPI_DMT_UINT64, ACPI_MRRM0_OFFSET (AddrLen), "System Address Length", 0}, + {ACPI_DMT_UINT16, ACPI_MRRM0_OFFSET (RegionIdFlags), "Region Valid Flags", 0}, + {ACPI_DMT_UINT8, ACPI_MRRM0_OFFSET (LocalRegionId), "Static Local Region ID", 0}, + {ACPI_DMT_UINT8, ACPI_MRRM0_OFFSET (RemoteRegionId), "Static Remote Region ID", 0}, + {ACPI_DMT_UINT32, ACPI_MRRM0_OFFSET (Reserved1), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * MSCT - Maximum System Characteristics Table (ACPI 4.0) * ******************************************************************************/ @@ -1259,206 +1650,6 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[] = /******************************************************************************* * - * NHLT - Non HD Audio Link Table. Conforms to Intel Smart Sound Technology - * NHLT Specification, January 2020 Revision 0.8.1 - * - ******************************************************************************/ - -/* Main table */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT_OFFSET (EndpointCount), "Endpoint Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Endpoint config */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt0[] = -{ - {ACPI_DMT_UINT32, ACPI_NHLT0_OFFSET (DescriptorLength), "Descriptor Length", DT_LENGTH}, - {ACPI_DMT_NHLT1, ACPI_NHLT0_OFFSET (LinkType), "Link Type", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT0_OFFSET (InstanceId), "Instance Id", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT0_OFFSET (VendorId), "Vendor Id", 0}, - {ACPI_DMT_NHLT1e, ACPI_NHLT0_OFFSET (DeviceId), "Device Id", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT0_OFFSET (RevisionId), "Revision Id", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT0_OFFSET (SubsystemId), "Subsystem Id", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT0_OFFSET (DeviceType), "Device Type", 0}, - {ACPI_DMT_NHLT1a, ACPI_NHLT0_OFFSET (Direction), "Direction", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT0_OFFSET (VirtualBusId), "Virtual Bus Id", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Device_Specific config */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt1[] = -{ - {ACPI_DMT_UINT32, ACPI_NHLT1_OFFSET (CapabilitiesSize), "Capabilities Size", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT1_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_NHLT1f, ACPI_NHLT1_OFFSET (ConfigType), "Config Type", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Wave Format Extensible */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt2[] = -{ - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (FormatTag), "Format Tag", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (ChannelCount), "Channel Count", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT2_OFFSET (SamplesPerSec), "Samples Per Second", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT2_OFFSET (AvgBytesPerSec), "Average Bytes Per Second", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (BlockAlign), "Block Alignment", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (BitsPerSample), "Bits Per Sample", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (ExtraFormatSize), "Extra Format Size", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT2_OFFSET (ValidBitsPerSample), "Valid Bits Per Sample", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT2_OFFSET (ChannelMask), "Channel Mask", 0}, - {ACPI_DMT_UUID, ACPI_NHLT2_OFFSET (SubFormatGuid), "SubFormat GUID", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Format Config (wave_format_extensible structure) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3[] = -{ - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.FormatTag), "Format Tag", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.ChannelCount), "Channel Count", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (Format.SamplesPerSec), "Samples Per Second", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (Format.AvgBytesPerSec), "Average Bytes Per Second", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.BlockAlign), "Block Alignment", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.BitsPerSample), "Bits Per Sample", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.ExtraFormatSize), "Extra Format Size", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.ValidBitsPerSample), "Valid Bits Per Sample", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (Format.ChannelMask), "Channel Mask", 0}, - {ACPI_DMT_UUID, ACPI_NHLT3_OFFSET (Format.SubFormatGuid), "SubFormat GUID", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (CapabilitySize), "Capabilities Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* - * We treat the binary Capabilities field as its own subtable (to make - * ACPI_DMT_RAW_BUFFER work properly). - */ -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3a[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "Capabilities", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Formats Config */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt4[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT4_OFFSET (FormatsCount), "Formats Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Specific Config, CapabilitiesSize == 2 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT5_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_NHLT1f, ACPI_NHLT5_OFFSET (ConfigType), "Config Type", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Specific Config, CapabilitiesSize == 3 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5a[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT5A_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_NHLT1f, ACPI_NHLT5A_OFFSET (ConfigType), "Config Type", 0}, - {ACPI_DMT_NHLT1d, ACPI_NHLT5A_OFFSET (ArrayType), "Array Type", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Specific Config, CapabilitiesSize == 0 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[] = -{ - {ACPI_DMT_UINT32, ACPI_NHLT5B_OFFSET (CapabilitiesSize), "Capabilities Size", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Specific Config, CapabilitiesSize == 1 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5c[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT5C_OFFSET (VirtualSlot), "Virtual Slot", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Microphone array Config */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6a[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT6A_OFFSET (MicrophoneCount), "Microphone Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Render Feedback Device Config, CapabilitiesSize == 7 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6b[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT6B_OFFSET (FeedbackVirtualSlot), "Feedback Virtual Slot", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6B_OFFSET (FeedbackChannels), "Feedback Channels", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6B_OFFSET (FeedbackValidBitsPerSample),"Valid Bits Per Sample", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[] = -{ - {ACPI_DMT_NHLT1b, ACPI_NHLT6_OFFSET (Type), "Type", 0}, - {ACPI_DMT_NHLT1c, ACPI_NHLT6_OFFSET (Panel), "Panel", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (SpeakerPositionDistance), "Speaker Position Distance", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (HorizontalOffset), "Horizontal Offset", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (VerticalOffset), "Vertical Offset", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT6_OFFSET (FrequencyLowBand), "Frequency Low Band", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT6_OFFSET (FrequencyHighBand), "Frequency High Band", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (DirectionAngle), "Direction Angle", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (ElevationAngle), "Elevation Angle", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (WorkVerticalAngleBegin), "Work Vertical Angle Begin", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (WorkVerticalAngleEnd), "Work Vertical Angle End", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (WorkHorizontalAngleBegin), "Work Horizontal Angle Begin", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (WorkHorizontalAngleEnd), "Work Horizontal Angle End", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Number of DeviceInfo structures */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7[] = -{ - {ACPI_DMT_UINT8, ACPI_NHLT7_OFFSET (StructureCount), "Device Info struct count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* The DeviceInfo structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7a[] = -{ - {ACPI_DMT_UUID, ACPI_NHLT7A_OFFSET (DeviceId), "Device ID GUID", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT7A_OFFSET (DeviceInstanceId), "Device Instance ID", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT7A_OFFSET (DevicePortId), "Device Port ID", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7b[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "Bytes", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Sensitivity Extension */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt9[] = -{ - {ACPI_DMT_UINT32, ACPI_NHLT9_OFFSET (SNR), "Signal-to-noise ratio", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT9_OFFSET (Sensitivity), "Mic Sensitivity", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * * PCCT - Platform Communications Channel Table (ACPI 5.0) * ******************************************************************************/ @@ -1652,11 +1843,13 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[] = * ******************************************************************************/ +/* Common subtable header */ + ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[] = { - {ACPI_DMT_PHAT, ACPI_PHATH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT16, ACPI_PHATH_OFFSET (Length), "Length", 0}, - {ACPI_DMT_UINT8, ACPI_PHATH_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_PHAT, ACPI_PHATH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT16, ACPI_PHATH_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT8, ACPI_PHATH_OFFSET (Revision), "Revision", 0}, ACPI_DMT_TERMINATOR }; @@ -1664,16 +1857,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[] = ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[] = { - {ACPI_DMT_UINT24, ACPI_PHAT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_PHAT0_OFFSET (ElementCount), "Element Count", 0}, + {ACPI_DMT_UINT24, ACPI_PHAT0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_PHAT0_OFFSET (ElementCount), "Element Count", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[] = { - {ACPI_DMT_UUID, ACPI_PHAT0A_OFFSET (Guid), "GUID", 0}, - {ACPI_DMT_UINT64, ACPI_PHAT0A_OFFSET (VersionValue), "Version Value", 0}, - {ACPI_DMT_UINT32, ACPI_PHAT0A_OFFSET (ProducerId), "Producer ID", 0}, + {ACPI_DMT_UUID, ACPI_PHAT0A_OFFSET (Guid), "GUID", 0}, + {ACPI_DMT_UINT64, ACPI_PHAT0A_OFFSET (VersionValue), "Version Value", 0}, + {ACPI_DMT_UINT32, ACPI_PHAT0A_OFFSET (ProducerId), "Producer ID", 0}, ACPI_DMT_TERMINATOR }; @@ -1681,22 +1874,22 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[] = ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1[] = { - {ACPI_DMT_UINT16, ACPI_PHAT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_PHAT1_OFFSET (Health), "Health", 0}, - {ACPI_DMT_UUID, ACPI_PHAT1_OFFSET (DeviceGuid), "Device GUID", 0}, - {ACPI_DMT_UINT32, ACPI_PHAT1_OFFSET (DeviceSpecificOffset), "Device specific offset", 0}, + {ACPI_DMT_UINT16, ACPI_PHAT1_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_PHAT1_OFFSET (Health), "Health", 0}, + {ACPI_DMT_UUID, ACPI_PHAT1_OFFSET (DeviceGuid), "Device GUID", 0}, + {ACPI_DMT_UINT32, ACPI_PHAT1_OFFSET (DeviceSpecificOffset), "Device-Specific Offset", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1a[] = { - {ACPI_DMT_STRING, 0, "Namepath", 0}, + {ACPI_DMT_UNICODE, 0, "Device Path", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoPhat1b[] = { - {ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0}, + {ACPI_DMT_RAW_BUFFER, 0, "Device-Specific Data", DT_OPTIONAL}, ACPI_DMT_TERMINATOR }; @@ -1895,7 +2088,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[] = {ACPI_DMT_UINT16, ACPI_PRMT1_OFFSET (Length), "Length", 0}, {ACPI_DMT_UUID, ACPI_PRMT1_OFFSET (HandlerGuid[0]), "Handler GUID", 0}, {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (HandlerAddress), "Handler address", 0}, - {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Satic Data Address", 0}, + {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Static Data Address", 0}, {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (AcpiParamBufferAddress), "ACPI Parameter Address", 0}, ACPI_DMT_NEW_LINE, ACPI_DMT_TERMINATOR @@ -1918,6 +2111,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[] = /******************************************************************************* * + * RAS2 - RAS2 Feature table (ACPI 6.5) + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRas2[] = +{ + {ACPI_DMT_UINT16, ACPI_RAS2_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_RAS2_OFFSET (NumPccDescs), "Number of PCC Descriptors", 0}, + ACPI_DMT_TERMINATOR +}; + +/* RAS2 PCC Descriptor */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRas2PccDesc[] = +{ + {ACPI_DMT_UINT8, ACPI_RAS2_PCC_DESC_OFFSET (ChannelId), "Channel ID", 0}, + {ACPI_DMT_UINT16, ACPI_RAS2_PCC_DESC_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_RAS2_PCC_DESC_OFFSET (FeatureType), "Feature Type", 0}, + {ACPI_DMT_UINT32, ACPI_RAS2_PCC_DESC_OFFSET (Instance), "Instance", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * RGRT - Regulatory Graphics Resource Table * ******************************************************************************/ @@ -1943,6 +2161,178 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[] = /******************************************************************************* * + * RHCT - RISC-V Hart Capabilities Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhct[] = +{ + {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT64, ACPI_RHCT_OFFSET (TimeBaseFreq), "Timer Base Frequency", 0}, + {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (NodeCount), "Number of nodes", 0}, + {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (NodeOffset), "Offset to the node array", 0}, + ACPI_DMT_TERMINATOR +}; + + +/* Common Subtable header (one per Subtable) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctNodeHdr[] = +{ + {ACPI_DMT_RHCT, ACPI_RHCTH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Revision), "Revision", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 0: ISA string type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsa1[] = +{ + {ACPI_DMT_UINT16, ACPI_RHCT0_OFFSET (IsaLength), "ISA string length", 0}, + {ACPI_DMT_STRING, ACPI_RHCT0_OFFSET (Isa[0]), "ISA string", 0}, + ACPI_DMT_TERMINATOR +}; + + +/* Optional padding field */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsaPad[] = +{ + {ACPI_DMT_RAW_BUFFER, 0, "Optional Padding", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + +/* 1: CMO node type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctCmo1[] = +{ + {ACPI_DMT_UINT8, ACPI_RHCT1_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_RHCT1_OFFSET (CbomSize), "CBOM Block Size", 0}, + {ACPI_DMT_UINT8, ACPI_RHCT1_OFFSET (CbopSize), "CBOP Block Size", 0}, + {ACPI_DMT_UINT8, ACPI_RHCT1_OFFSET (CbozSize), "CBOZ Block Size", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 2: MMU node type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctMmu1[] = +{ + {ACPI_DMT_UINT8, ACPI_RHCT2_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_RHCT2_OFFSET (MmuType), "MMU Type", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 0xFFFF: Hart Info type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo1[] = +{ + {ACPI_DMT_UINT16, ACPI_RHCTFFFF_OFFSET (NumOffsets), "Number of offsets", 0}, + {ACPI_DMT_UINT32, ACPI_RHCTFFFF_OFFSET (Uid), "Processor UID", 0}, + ACPI_DMT_TERMINATOR +}; + + +ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo2[] = +{ + {ACPI_DMT_UINT32, 0, "Nodes", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * RIMT - RISC-V IO Mapping Table + * + * https://github.com/riscv-non-isa/riscv-acpi-rimt + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimt[] = +{ + {ACPI_DMT_UINT32, ACPI_RIMT_OFFSET (NumNodes), "Number of RIMT Nodes", 0}, + {ACPI_DMT_UINT32, ACPI_RIMT_OFFSET (NodeOffset), "Offset to RIMT Node Array", 0}, + {ACPI_DMT_UINT32, ACPI_RIMT_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + + +/* Common Subtable header (one per Subtable) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtNodeHdr[] = +{ + {ACPI_DMT_UINT8, ACPI_RIMTH_OFFSET (Type), "Type", 0}, + {ACPI_DMT_UINT8, ACPI_RIMTH_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTH_OFFSET (Length), "Length", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTH_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTH_OFFSET (Id), "ID", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 0: IOMMU Node type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIommu[] = +{ + {ACPI_DMT_NAME8, ACPI_RIMTI_OFFSET (HardwareId), "Hardware ID", 0}, + {ACPI_DMT_UINT64, ACPI_RIMTI_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTI_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTI_OFFSET (ProximityDomain), "Proximity Domain", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTI_OFFSET (PcieSegmentNumber), "PCIe Segment number", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTI_OFFSET (PcieBdf), "PCIe B/D/F", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTI_OFFSET (NumInterruptWires), "Number of interrupt wires", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTI_OFFSET (InterruptWireOffset), "Interrupt wire array offset", 0}, + ACPI_DMT_TERMINATOR +}; + + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIommuWire[] = +{ + {ACPI_DMT_UINT32, ACPI_RIMTW_OFFSET (IrqNum), "Interrupt Number", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTW_OFFSET (Flags), "Flags", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 1: PCIE Root Complex Node type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPcieRc[] = +{ + {ACPI_DMT_UINT32, ACPI_RIMTP_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTP_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTP_OFFSET (PcieSegmentNumber), "PCIe Segment number", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTP_OFFSET (IdMappingOffset), "ID mapping array offset", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTP_OFFSET (NumIdMappings), "Number of ID mappings", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIdMapping[] = +{ + {ACPI_DMT_UINT32, ACPI_RIMTM_OFFSET (SourceIdBase), "Source ID Base", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTM_OFFSET (NumIds), "Number of IDs", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTM_OFFSET (DestIdBase), "Destination Device ID Base", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTM_OFFSET (DestOffset), "Destination IOMMU Offset", 0}, + {ACPI_DMT_UINT32, ACPI_RIMTM_OFFSET (Flags), "Flags", 0}, + ACPI_DMT_TERMINATOR +}; + +/* 2: Platform Device Node type */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPlatDev[] = +{ + {ACPI_DMT_UINT16, ACPI_RIMTN_OFFSET (IdMappingOffset), "ID mapping array offset", 0}, + {ACPI_DMT_UINT16, ACPI_RIMTN_OFFSET (NumIdMappings), "Number of ID mappings", 0}, + {ACPI_DMT_STRING, ACPI_RIMTN_OFFSET (DeviceName[0]), "Device Object Name", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPlatDevPad[] = +{ + {ACPI_DMT_RAW_BUFFER, 0, "Padding", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * S3PT - S3 Performance Table * ******************************************************************************/ diff --git a/sys/contrib/dev/acpica/common/dmtbinfo3.c b/sys/contrib/dev/acpica/common/dmtbinfo3.c index 38fe8f9d23ac..0935fc86aff9 100644 --- a/sys/contrib/dev/acpica/common/dmtbinfo3.c +++ b/sys/contrib/dev/acpica/common/dmtbinfo3.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -192,6 +192,23 @@ /******************************************************************************* * + * CCEL - CC-Event Log Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoCcel[] = +{ + {ACPI_DMT_UINT8, ACPI_CCEL_OFFSET (CCType), "CC Type", 0}, + {ACPI_DMT_UINT8, ACPI_CCEL_OFFSET (CCSubType), "CC Sub Type", 0}, + {ACPI_DMT_UINT16, ACPI_CCEL_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_CCEL_OFFSET (LogAreaMinimumLength), "Log Area Minimum Length", 0}, + {ACPI_DMT_UINT64, ACPI_CCEL_OFFSET (LogAreaStartAddress), "Log Area Start Address", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * SLIC - Software Licensing Description Table. This table contains the standard * ACPI header followed by proprietary data structures * @@ -238,7 +255,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] = {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Language), "Language", 0}, {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0}, {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0}, @@ -246,7 +263,11 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] = {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0}, {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (UartClkFreq), "Uart Clock Freq", 0}, + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PreciseBaudrate), "Precise Baud rate", 0}, + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (NameSpaceStringLength), "NameSpaceStringLength", 0}, + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (NameSpaceStringOffset), "NameSpaceStringOffset", 0}, + {ACPI_DMT_STRING, ACPI_SPCR_OFFSET (NameSpaceString), "NamespaceString", 0}, ACPI_DMT_TERMINATOR }; @@ -358,7 +379,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[] = ACPI_DMT_TERMINATOR }; -/* 4: GCC ITS Affinity (ACPI 6.2) */ +/* 4: GIC ITS Affinity (ACPI 6.2) */ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[] = { @@ -396,6 +417,19 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat6[] = ACPI_DMT_TERMINATOR }; +/* 7: RINTC Affinity Structure (ACPI 6.6) */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat7[] = +{ + {ACPI_DMT_UINT16, ACPI_SRAT7_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_SRAT7_OFFSET (ProximityDomain), "Proximity Domain", 0}, + {ACPI_DMT_UINT32, ACPI_SRAT7_OFFSET (AcpiProcessorUid), "Acpi Processor UID", 0}, + {ACPI_DMT_UINT32, ACPI_SRAT7_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_SRAT7_FLAG_OFFSET (Flags,0), "Enabled", 0}, + {ACPI_DMT_UINT32, ACPI_SRAT7_OFFSET (ClockDomain), "Clock Domain", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * * STAO - Status Override Table (_STA override) - ACPI 6.0 diff --git a/sys/contrib/dev/acpica/common/getopt.c b/sys/contrib/dev/acpica/common/getopt.c index 15576d4f2db5..535e7a00bc8f 100644 --- a/sys/contrib/dev/acpica/common/getopt.c +++ b/sys/contrib/dev/acpica/common/getopt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslallocate.c b/sys/contrib/dev/acpica/compiler/aslallocate.c index 9e1478eb50f0..57e538b534e5 100644 --- a/sys/contrib/dev/acpica/compiler/aslallocate.c +++ b/sys/contrib/dev/acpica/compiler/aslallocate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -295,9 +295,13 @@ void UtFreeLineBuffers ( void) { - free (AslGbl_CurrentLineBuffer); + free (AslGbl_MainTokenBuffer); + free (AslGbl_MacroTokenBuffer); + + free (AslGbl_MacroTokenReplaceBuffer); + free (AslGbl_ExpressionTokenBuffer); } diff --git a/sys/contrib/dev/acpica/compiler/aslanalyze.c b/sys/contrib/dev/acpica/compiler/aslanalyze.c index 4e319ef2c792..625611a630de 100644 --- a/sys/contrib/dev/acpica/compiler/aslanalyze.c +++ b/sys/contrib/dev/acpica/compiler/aslanalyze.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -572,10 +572,22 @@ ApCheckForGpeNameConflict ( ACPI_PARSE_OBJECT *NextOp; UINT32 GpeNumber; char Name[ACPI_NAMESEG_SIZE + 1]; - char Target[ACPI_NAMESEG_SIZE]; + char Target[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; - /* Need a null-terminated string version of NameSeg */ + /** + * Need a null-terminated string version of NameSeg + * + * NOTE: during a review on Name[ACPI_NAMESEG_SIZE + 1] having an extra + * byte[1], compiler testing exhibited a difference in behavior between + * GCC and Clang[2] (at least; MSVC may also exhibit the same) in + * how optimization is done. The extra byte is needed to ensure + * the signature does not get mangled, subsequently avoiding + * GpeNumber being a completely different return value from strtoul. + * + * [1] https://github.com/acpica/acpica/pull/1019#discussion_r2058687704 + * [2] https://github.com/acpica/acpica/pull/1019#discussion_r2061953039 + */ ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg); Name[ACPI_NAMESEG_SIZE] = 0; diff --git a/sys/contrib/dev/acpica/compiler/aslascii.c b/sys/contrib/dev/acpica/compiler/aslascii.c index daddc70f8972..1de3d763c765 100644 --- a/sys/contrib/dev/acpica/compiler/aslascii.c +++ b/sys/contrib/dev/acpica/compiler/aslascii.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslbtypes.c b/sys/contrib/dev/acpica/compiler/aslbtypes.c index 3b4424b58cda..539cd7977b4e 100644 --- a/sys/contrib/dev/acpica/compiler/aslbtypes.c +++ b/sys/contrib/dev/acpica/compiler/aslbtypes.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -501,10 +501,11 @@ AnGetBtype ( ACPI_PARSE_OBJECT *ReferencedNode; UINT32 ThisNodeBtype = 0; + ACPI_FUNCTION_NAME (AnGetBtype); if (!Op) { - AcpiOsPrintf ("Null Op in AnGetBtype\n"); + AcpiOsPrintf ("Null Op in %s\n", ACPI_GET_FUNCTION_NAME); return (ACPI_UINT32_MAX); } diff --git a/sys/contrib/dev/acpica/compiler/aslcache.c b/sys/contrib/dev/acpica/compiler/aslcache.c index cf9775f8ccfd..9f917ff32945 100644 --- a/sys/contrib/dev/acpica/compiler/aslcache.c +++ b/sys/contrib/dev/acpica/compiler/aslcache.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -210,7 +210,8 @@ UtLocalCacheCalloc ( } } - if ((AslGbl_StringCacheNext + Length) >= AslGbl_StringCacheLast) + if ((!AslGbl_StringCacheNext) || + ((AslGbl_StringCacheNext + Length) >= AslGbl_StringCacheLast)) { /* Allocate a new buffer */ diff --git a/sys/contrib/dev/acpica/compiler/aslcodegen.c b/sys/contrib/dev/acpica/compiler/aslcodegen.c index ca2d5a727972..684c59f802e9 100644 --- a/sys/contrib/dev/acpica/compiler/aslcodegen.c +++ b/sys/contrib/dev/acpica/compiler/aslcodegen.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -153,6 +153,7 @@ #include "aslcompiler.y.h" #include <contrib/dev/acpica/include/amlcode.h> #include <contrib/dev/acpica/include/acconvert.h> +#include <contrib/dev/acpica/include/actbinfo.h> #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcodegen") @@ -181,6 +182,10 @@ static void CgUpdateHeader ( ACPI_PARSE_OBJECT *Op); +static void +CgUpdateCdatHeader ( + ACPI_PARSE_OBJECT *Op); + /******************************************************************************* * @@ -207,7 +212,14 @@ CgGenerateAmlOutput ( CgAmlWriteWalk, NULL, NULL); DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER2); - CgUpdateHeader (AslGbl_CurrentDB); + if (AcpiGbl_CDAT) + { + CgUpdateCdatHeader (AslGbl_CurrentDB); + } + else + { + CgUpdateHeader (AslGbl_CurrentDB); + } } @@ -658,6 +670,67 @@ CgWriteTableHeader ( /******************************************************************************* * + * FUNCTION: CgUpdateCdatHeader + * + * PARAMETERS: Op - Op for the Definition Block + * + * RETURN: None. + * + * DESCRIPTION: Complete the ACPI table by calculating the checksum and + * re-writing the header for the input definition block + * + ******************************************************************************/ + +static void +CgUpdateCdatHeader ( + ACPI_PARSE_OBJECT *Op) +{ + signed char Sum; + UINT32 i; + UINT32 Length; + UINT8 FileByte; + UINT8 Checksum; + + + /* Calculate the checksum over the entire definition block */ + + Sum = 0; + Length = sizeof (ACPI_TABLE_CDAT) + Op->Asl.AmlSubtreeLength; + FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset); + + for (i = 0; i < Length; i++) + { + if (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1) != AE_OK) + { + AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL, + "Table length is greater than size of the input file"); + return; + } + + Sum = (signed char) (Sum + FileByte); + } + + Checksum = (UINT8) (0 - Sum); + + DbgPrint (ASL_DEBUG_OUTPUT, "Computed checksum = %X\n", Checksum); + + /* Re-write the checksum byte */ + + FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset + + ACPI_CDAT_OFFSET (Checksum)); + + FlWriteFile (ASL_FILE_AML_OUTPUT, &Checksum, 1); + + /* + * Seek to the end of the file. This is done to support multiple file + * compilation. Doing this simplifies other parts of the codebase because + * it eliminates the need to seek for a different starting place. + */ + FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset + Length); +} + +/******************************************************************************* + * * FUNCTION: CgUpdateHeader * * PARAMETERS: Op - Op for the Definition Block diff --git a/sys/contrib/dev/acpica/compiler/aslcompile.c b/sys/contrib/dev/acpica/compiler/aslcompile.c index 5c1b40a1bc69..6e8ce6aae2c9 100644 --- a/sys/contrib/dev/acpica/compiler/aslcompile.c +++ b/sys/contrib/dev/acpica/compiler/aslcompile.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -241,7 +241,7 @@ CmDoCompile ( if (AslGbl_SyntaxError) { - fprintf (stderr, + AslError (ASL_ERROR, ASL_MSG_SYNTAX, NULL, "Compiler aborting due to parser-detected syntax error(s)\n"); /* Flag this error in the FileNode for compilation summary */ @@ -250,6 +250,8 @@ CmDoCompile ( FileNode->ParserErrorDetected = TRUE; AslGbl_ParserErrorDetected = TRUE; LsDumpParseTree (); + AePrintErrorLog(ASL_FILE_STDERR); + goto ErrorExit; } @@ -267,6 +269,8 @@ CmDoCompile ( goto ErrorExit; } + AePrintErrorLog(ASL_FILE_STDERR); + /* Flush out any remaining source after parse tree is complete */ Event = UtBeginEvent ("Flush source input"); @@ -283,10 +287,13 @@ CmDoCompile ( LsDumpParseTree (); + AslGbl_ParserErrorDetected = FALSE; + AslGbl_SyntaxError = FALSE; UtEndEvent (Event); UtEndEvent (FullCompile); - return (AE_OK); + AslGbl_ParserErrorDetected = FALSE; + AslGbl_SyntaxError = FALSE; ErrorExit: UtEndEvent (FullCompile); return (AE_ERROR); @@ -690,18 +697,24 @@ AslCompilerFileHeader ( break; } - /* Compilation header with timestamp */ - - Aclock = time (NULL); - NewTime = ctime (&Aclock); + /* Compilation header (with timestamp) */ FlPrintFile (FileId, - "%sCompilation of \"%s\" -", + "%sCompilation of \"%s\"", Prefix, AslGbl_Files[ASL_FILE_INPUT].Filename); - if (NewTime) + if (!AslGbl_Deterministic) + { + Aclock = time (NULL); + NewTime = ctime (&Aclock); + if (NewTime) + { + FlPrintFile (FileId, " - %s%s\n", NewTime, Prefix); + } + } + else { - FlPrintFile (FileId, " %s%s\n", NewTime, Prefix); + FlPrintFile (FileId, "\n"); } switch (FileId) @@ -919,7 +932,6 @@ CmCleanupAndExit ( ASL_MAX_ERROR_COUNT); } - AslGbl_ExceptionCount[ASL_ERROR] = 0; UtDisplaySummary (ASL_FILE_STDOUT); /* diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h index 9a30a7e04bb3..d131b949252a 100644 --- a/sys/contrib/dev/acpica/compiler/aslcompiler.h +++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -1566,6 +1566,9 @@ ASL_RESOURCE_NODE * RsDoPinGroupConfigDescriptor ( ASL_RESOURCE_INFO *Info); +ASL_RESOURCE_NODE * +RsDoClockInputDescriptor ( + ASL_RESOURCE_INFO *Info); /* * aslrestype2d - DWord address descriptors @@ -1579,9 +1582,12 @@ RsDoDwordMemoryDescriptor ( ASL_RESOURCE_INFO *Info); ASL_RESOURCE_NODE * -RsDoDwordSpaceDescriptor ( +RsDoDwordPccDescriptor ( ASL_RESOURCE_INFO *Info); +ASL_RESOURCE_NODE * +RsDoDwordSpaceDescriptor ( + ASL_RESOURCE_INFO *Info); /* * aslrestype2e - Extended address descriptors @@ -1611,6 +1617,10 @@ RsDoQwordMemoryDescriptor ( ASL_RESOURCE_INFO *Info); ASL_RESOURCE_NODE * +RsDoQwordPccDescriptor ( + ASL_RESOURCE_INFO *Info); + +ASL_RESOURCE_NODE * RsDoQwordSpaceDescriptor ( ASL_RESOURCE_INFO *Info); @@ -1623,6 +1633,10 @@ RsDoWordIoDescriptor ( ASL_RESOURCE_INFO *Info); ASL_RESOURCE_NODE * +RsDoWordPccDescriptor ( + ASL_RESOURCE_INFO *Info); + +ASL_RESOURCE_NODE * RsDoWordSpaceDescriptor ( ASL_RESOURCE_INFO *Info); diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.l b/sys/contrib/dev/acpica/compiler/aslcompiler.l index 423f201dc765..5e94f9626018 100644 --- a/sys/contrib/dev/acpica/compiler/aslcompiler.l +++ b/sys/contrib/dev/acpica/compiler/aslcompiler.l @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -438,6 +438,7 @@ NamePathTail [.]{NameSeg} "DMA" { count (1); return (PARSEOP_DMA); } "DWordIO" { count (1); return (PARSEOP_DWORDIO); } "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); } +"DWordPcc" { count (1); return (PARSEOP_DWORDPCC); } "DWordSpace" { count (1); return (PARSEOP_DWORDSPACE); } "EndDependentFn" { count (1); return (PARSEOP_ENDDEPENDENTFN); } "ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); } @@ -461,8 +462,10 @@ NamePathTail [.]{NameSeg} "PinGroup" { count (1); return (PARSEOP_PINGROUP); } "PinGroupConfig" { count (1); return (PARSEOP_PINGROUPCONFIG); } "PinGroupFunction" { count (1); return (PARSEOP_PINGROUPFUNCTION); } +"ClockInput" { count (1); return (PARSEOP_CLOCKINPUT); } "QWordIO" { count (1); return (PARSEOP_QWORDIO); } "QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); } +"QWordPcc" { count (1); return (PARSEOP_DWORDPCC); } "QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); } "Register" { count (1); return (PARSEOP_REGISTER); } "SpiSerialBus" { count (1); return (PARSEOP_SPI_SERIALBUS); } @@ -475,6 +478,7 @@ NamePathTail [.]{NameSeg} "VendorShort" { count (1); return (PARSEOP_VENDORSHORT); } "WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); } "WordIO" { count (1); return (PARSEOP_WORDIO); } +"WordPcc" { count (1); return (PARSEOP_DWORDPCC); } "WordSpace" { count (1); return (PARSEOP_WORDSPACE); } @@ -665,6 +669,17 @@ NamePathTail [.]{NameSeg} "PullDown" { count (0); return (PARSEOP_PIN_PULLDOWN); } "PullNone" { count (0); return (PARSEOP_PIN_NOPULL); } + /* ClockScaleKeyword: Resource Descriptors (ACPI 6.5) */ + +"Hz" { count (0); return (PARSEOP_CLOCK_HZ); } +"KHz" { count (0); return (PARSEOP_CLOCK_KHZ); } +"MHz" { count (0); return (PARSEOP_CLOCK_MHZ); } + + /* ClockModeKeyword: Resource Descriptors (ACPI 6.5) */ + +"Fixed" { count (0); return (PARSEOP_CLOCK_FIXED); } +"Variable" { count (0); return (PARSEOP_CLOCK_VARIABLE); } + /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */ "PolarityLow" { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); } diff --git a/sys/contrib/dev/acpica/compiler/aslcstyle.y b/sys/contrib/dev/acpica/compiler/aslcstyle.y index b4e9065fee0f..59a1abea1bee 100644 --- a/sys/contrib/dev/acpica/compiler/aslcstyle.y +++ b/sys/contrib/dev/acpica/compiler/aslcstyle.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asldebug.c b/sys/contrib/dev/acpica/compiler/asldebug.c index ed4554af3d1e..18b68dea6de0 100644 --- a/sys/contrib/dev/acpica/compiler/asldebug.c +++ b/sys/contrib/dev/acpica/compiler/asldebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asldefine.h b/sys/contrib/dev/acpica/compiler/asldefine.h index 12b2899e4062..89b6b8a69956 100644 --- a/sys/contrib/dev/acpica/compiler/asldefine.h +++ b/sys/contrib/dev/acpica/compiler/asldefine.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -162,7 +162,7 @@ #define ASL_CREATOR_ID "INTL" #define ASL_DEFINE "__IASL__" #define ASL_PREFIX "iASL: " -#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.3" +#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.5" /* Configuration constants */ diff --git a/sys/contrib/dev/acpica/compiler/aslerror.c b/sys/contrib/dev/acpica/compiler/aslerror.c index 2e0d15e8cb76..ff01bef7b4b7 100644 --- a/sys/contrib/dev/acpica/compiler/aslerror.c +++ b/sys/contrib/dev/acpica/compiler/aslerror.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -1033,7 +1033,6 @@ AslLogNewError ( exit(1); } - AslGbl_ExceptionCount[ASL_ERROR] = 0; return; } diff --git a/sys/contrib/dev/acpica/compiler/aslexternal.c b/sys/contrib/dev/acpica/compiler/aslexternal.c index 861bc72ba561..e2f082593c5d 100644 --- a/sys/contrib/dev/acpica/compiler/aslexternal.c +++ b/sys/contrib/dev/acpica/compiler/aslexternal.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslfileio.c b/sys/contrib/dev/acpica/compiler/aslfileio.c index 9cecfaead4d8..4bf18404b1f5 100644 --- a/sys/contrib/dev/acpica/compiler/aslfileio.c +++ b/sys/contrib/dev/acpica/compiler/aslfileio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslfiles.c b/sys/contrib/dev/acpica/compiler/aslfiles.c index cc7486382800..0cad8eff47e8 100644 --- a/sys/contrib/dev/acpica/compiler/aslfiles.c +++ b/sys/contrib/dev/acpica/compiler/aslfiles.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -346,7 +346,9 @@ FlGetFileHandle ( while (Current) { - if (!strcmp (Current->Files[InFileId].Filename, Filename)) + if (!((Current->FileType == ASL_INPUT_TYPE_ASCII_DATA) && + (InFileId == ASL_FILE_SOURCE_OUTPUT)) && + !strcmp (Current->Files[InFileId].Filename, Filename)) { return (Current->Files[OutFileId].Handle); } diff --git a/sys/contrib/dev/acpica/compiler/aslfold.c b/sys/contrib/dev/acpica/compiler/aslfold.c index 3b889e3bd68c..89107297588b 100644 --- a/sys/contrib/dev/acpica/compiler/aslfold.c +++ b/sys/contrib/dev/acpica/compiler/aslfold.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslglobal.h b/sys/contrib/dev/acpica/compiler/aslglobal.h index ff00b92ef1ea..c79758919f6f 100644 --- a/sys/contrib/dev/acpica/compiler/aslglobal.h +++ b/sys/contrib/dev/acpica/compiler/aslglobal.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -325,6 +325,7 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_ReferenceOptimizatio ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DisplayRemarks, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DisplayWarnings, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DisplayOptimizations, FALSE); +ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_Deterministic, TRUE); ASL_EXTERN UINT8 ASL_INIT_GLOBAL (AslGbl_WarningLevel, ASL_WARNING); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_UseOriginalCompilerId, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_VerboseTemplates, FALSE); diff --git a/sys/contrib/dev/acpica/compiler/aslhelp.c b/sys/contrib/dev/acpica/compiler/aslhelp.c index 4b995101310e..fcec07e67e70 100644 --- a/sys/contrib/dev/acpica/compiler/aslhelp.c +++ b/sys/contrib/dev/acpica/compiler/aslhelp.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -184,6 +184,7 @@ Usage ( ACPI_OPTION ("-v", "Display compiler version"); ACPI_OPTION ("-vo", "Enable optimization comments"); ACPI_OPTION ("-vs", "Disable signon"); + ACPI_OPTION ("-ld", "Disable deterministic output"); printf ("\nHelp:\n"); ACPI_OPTION ("-h", "This message"); @@ -261,6 +262,7 @@ Usage ( ACPI_OPTION ("", " (Obtain DSDT from current system if no input file)"); ACPI_OPTION ("-df", "Force disassembler to assume table contains valid AML"); ACPI_OPTION ("-dl", "Emit legacy ASL code only (no C-style operators)"); + ACPI_OPTION ("-ds <signature(4)>", "Specify a table signature(4) (CDAT table only)"); ACPI_OPTION ("-e <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution"); ACPI_OPTION ("-fe <file>", "Specify external symbol declaration file"); ACPI_OPTION ("-in", "Ignore NoOp opcodes"); diff --git a/sys/contrib/dev/acpica/compiler/aslhelpers.y b/sys/contrib/dev/acpica/compiler/aslhelpers.y index 2764bf65b9f7..cb13d1ebcfe7 100644 --- a/sys/contrib/dev/acpica/compiler/aslhelpers.y +++ b/sys/contrib/dev/acpica/compiler/aslhelpers.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslhex.c b/sys/contrib/dev/acpica/compiler/aslhex.c index 694a39833492..927e50f24c1d 100644 --- a/sys/contrib/dev/acpica/compiler/aslhex.c +++ b/sys/contrib/dev/acpica/compiler/aslhex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslkeywords.y b/sys/contrib/dev/acpica/compiler/aslkeywords.y index 661cfc9397b0..7cb670e61bfb 100644 --- a/sys/contrib/dev/acpica/compiler/aslkeywords.y +++ b/sys/contrib/dev/acpica/compiler/aslkeywords.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -462,3 +462,14 @@ XferTypeKeyword | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafOp (PARSEOP_XFERTYPE_8_16);} | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafOp (PARSEOP_XFERTYPE_16);} ; + +ClockScaleKeyword + : PARSEOP_CLOCK_HZ {$$ = TrCreateLeafOp (PARSEOP_CLOCK_HZ);} + | PARSEOP_CLOCK_KHZ {$$ = TrCreateLeafOp (PARSEOP_CLOCK_KHZ);} + | PARSEOP_CLOCK_MHZ {$$ = TrCreateLeafOp (PARSEOP_CLOCK_MHZ);} + ; + +ClockModeKeyword + : PARSEOP_CLOCK_FIXED {$$ = TrCreateLeafOp (PARSEOP_CLOCK_FIXED);} + | PARSEOP_CLOCK_VARIABLE {$$ = TrCreateLeafOp (PARSEOP_CLOCK_VARIABLE);} + ; diff --git a/sys/contrib/dev/acpica/compiler/asllength.c b/sys/contrib/dev/acpica/compiler/asllength.c index 3aa0c4f3acd1..136ca5823001 100644 --- a/sys/contrib/dev/acpica/compiler/asllength.c +++ b/sys/contrib/dev/acpica/compiler/asllength.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asllisting.c b/sys/contrib/dev/acpica/compiler/asllisting.c index 05c8ed0be4a7..2a6341bb59e1 100644 --- a/sys/contrib/dev/acpica/compiler/asllisting.c +++ b/sys/contrib/dev/acpica/compiler/asllisting.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asllistsup.c b/sys/contrib/dev/acpica/compiler/asllistsup.c index 25b5fe0f1a63..3458e28062de 100644 --- a/sys/contrib/dev/acpica/compiler/asllistsup.c +++ b/sys/contrib/dev/acpica/compiler/asllistsup.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslload.c b/sys/contrib/dev/acpica/compiler/aslload.c index 924b0fb976f0..c88fb13aba78 100644 --- a/sys/contrib/dev/acpica/compiler/aslload.c +++ b/sys/contrib/dev/acpica/compiler/aslload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asllookup.c b/sys/contrib/dev/acpica/compiler/asllookup.c index 054926eb7a63..3dfdb1fce21e 100644 --- a/sys/contrib/dev/acpica/compiler/asllookup.c +++ b/sys/contrib/dev/acpica/compiler/asllookup.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmain.c b/sys/contrib/dev/acpica/compiler/aslmain.c index a59f15409622..ff22dec73369 100644 --- a/sys/contrib/dev/acpica/compiler/aslmain.c +++ b/sys/contrib/dev/acpica/compiler/aslmain.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmap.c b/sys/contrib/dev/acpica/compiler/aslmap.c index 89581f534ca4..4711b884a57c 100644 --- a/sys/contrib/dev/acpica/compiler/aslmap.c +++ b/sys/contrib/dev/acpica/compiler/aslmap.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -319,6 +319,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* DWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_DWORD, 0, 0, ACPI_BTYPE_INTEGER), /* DWORDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DWORDMEMORY */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), +/* DWORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* EISAID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ELSE */ OP_TABLE_ENTRY (AML_ELSE_OP, 0, OP_AML_PACKAGE, 0), @@ -462,11 +463,18 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* PIN_PULLDEFAULT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* PIN_PULLDOWN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* PIN_PULLUP */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), +/* CLOCKINPUT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), +/* CLOCK_HZ */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), +/* CLOCK_KHZ */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), +/* CLOCK_MHZ */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), +/* CLOCK_FIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), +/* CLOCK_VARIABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RESOURCE_OP, 0, OP_AML_PACKAGE, 0), /* PROCESSOR */ OP_TABLE_ENTRY (AML_PROCESSOR_OP, 0, OP_AML_PACKAGE, 0), /* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER), /* QWORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* QWORDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), +/* QWORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* QWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RANGE_TYPE_ENTIRE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* RANGE_TYPE_ISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), @@ -554,6 +562,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* WORDBUSNUMBER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* WORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_WORD, 0, 0, ACPI_BTYPE_INTEGER), /* WORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), +/* WORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* WORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), diff --git a/sys/contrib/dev/acpica/compiler/aslmapenter.c b/sys/contrib/dev/acpica/compiler/aslmapenter.c index 4c725413c0d5..81b57cb3f13d 100644 --- a/sys/contrib/dev/acpica/compiler/aslmapenter.c +++ b/sys/contrib/dev/acpica/compiler/aslmapenter.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmapoutput.c b/sys/contrib/dev/acpica/compiler/aslmapoutput.c index 8be3a3436881..a009f64bc98d 100644 --- a/sys/contrib/dev/acpica/compiler/aslmapoutput.c +++ b/sys/contrib/dev/acpica/compiler/aslmapoutput.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmaputils.c b/sys/contrib/dev/acpica/compiler/aslmaputils.c index 6fe90db59358..f978e6a940b3 100644 --- a/sys/contrib/dev/acpica/compiler/aslmaputils.c +++ b/sys/contrib/dev/acpica/compiler/aslmaputils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.c b/sys/contrib/dev/acpica/compiler/aslmessages.c index 6318cff50fe7..1e363236a149 100644 --- a/sys/contrib/dev/acpica/compiler/aslmessages.c +++ b/sys/contrib/dev/acpica/compiler/aslmessages.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.h b/sys/contrib/dev/acpica/compiler/aslmessages.h index 197e9e2276c0..dc0bbe10bd0d 100644 --- a/sys/contrib/dev/acpica/compiler/aslmessages.h +++ b/sys/contrib/dev/acpica/compiler/aslmessages.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslmethod.c b/sys/contrib/dev/acpica/compiler/aslmethod.c index 61fd7b6681db..75096d38999e 100644 --- a/sys/contrib/dev/acpica/compiler/aslmethod.c +++ b/sys/contrib/dev/acpica/compiler/aslmethod.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -546,9 +546,9 @@ MtMethodAnalysisWalkBegin ( else if (HidExists && AdrExists) { /* - * According to the ACPI spec, "A device object must contain - * either an _HID object or an _ADR object, but should not contain - * both". + * "A device object must contain either an _HID object or + * an _ADR object, but must not contain both". + * (ACPI spec 6.3, Errata A Section 6.1, page 327) */ AslError (ASL_WARNING, ASL_MSG_MULTIPLE_TYPES, Op, "Device object requires either a _HID or _ADR, but not both"); diff --git a/sys/contrib/dev/acpica/compiler/aslnamesp.c b/sys/contrib/dev/acpica/compiler/aslnamesp.c index 3114fc6ba86f..9388d7428db6 100644 --- a/sys/contrib/dev/acpica/compiler/aslnamesp.c +++ b/sys/contrib/dev/acpica/compiler/aslnamesp.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asloffset.c b/sys/contrib/dev/acpica/compiler/asloffset.c index 527f63b6f8cf..d60c4c4ec367 100644 --- a/sys/contrib/dev/acpica/compiler/asloffset.c +++ b/sys/contrib/dev/acpica/compiler/asloffset.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslopcodes.c b/sys/contrib/dev/acpica/compiler/aslopcodes.c index 0f9075c9b609..8bef46b0d7ae 100644 --- a/sys/contrib/dev/acpica/compiler/aslopcodes.c +++ b/sys/contrib/dev/acpica/compiler/aslopcodes.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asloperands.c b/sys/contrib/dev/acpica/compiler/asloperands.c index 7325bbe6d845..1978b38b1cff 100644 --- a/sys/contrib/dev/acpica/compiler/asloperands.c +++ b/sys/contrib/dev/acpica/compiler/asloperands.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslopt.c b/sys/contrib/dev/acpica/compiler/aslopt.c index 07541a97706c..02d46458d6ac 100644 --- a/sys/contrib/dev/acpica/compiler/aslopt.c +++ b/sys/contrib/dev/acpica/compiler/aslopt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asloptions.c b/sys/contrib/dev/acpica/compiler/asloptions.c index 27308a1dc36c..a46ce96f5dbd 100644 --- a/sys/contrib/dev/acpica/compiler/asloptions.c +++ b/sys/contrib/dev/acpica/compiler/asloptions.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -152,6 +152,7 @@ #include <contrib/dev/acpica/compiler/aslcompiler.h> #include <contrib/dev/acpica/include/acapps.h> #include <contrib/dev/acpica/include/acdisasm.h> +#include <contrib/dev/acpica/include/acglobal.h> #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asloption") @@ -176,7 +177,7 @@ AslDoResponseFile ( #define ASL_TOKEN_SEPARATORS " \t\n" -#define ASL_SUPPORTED_OPTIONS "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|t|T+G^v^w|x:z" +#define ASL_SUPPORTED_OPTIONS "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|:t|T+G^v^w|x:z" /******************************************************************************* @@ -270,7 +271,7 @@ AslDoOptions ( BOOLEAN IsResponseFile) { ACPI_STATUS Status; - UINT32 j; + INT32 j; /* Get the command line options */ @@ -366,7 +367,6 @@ AslDoOptions ( { return (-1); } - AslGbl_PruneType = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0); break; @@ -445,6 +445,28 @@ AslDoOptions ( AcpiGbl_CstyleDisassembly = FALSE; break; + case 's': /* Specify table signature (Only supported for CDAT table) */ + + /* Get the required argument */ + + if (AcpiGetoptArgument (argc, argv)) + { + return (-1); + } + + /* Check for exact string "CDAT" (upper or lower case) */ + + AcpiGbl_CDAT = ACPI_CAST_PTR (char, &AcpiGbl_Optarg); + if (AcpiUtStricmp (AcpiGbl_Optarg, ACPI_SIG_CDAT)) + { + printf ("\nUnknown table signature: %s\n", AcpiGbl_Optarg); + return (-1); + } + + AcpiGbl_CDAT = malloc (5); + AcpiUtSafeStrncpy ((char *) AcpiGbl_CDAT, ACPI_SIG_CDAT, 5); + break; + default: printf ("Unknown option: -d%s\n", AcpiGbl_Optarg); @@ -608,6 +630,13 @@ AslDoOptions ( AcpiGbl_DmOpt_Listing = TRUE; break; + case 'd': + + /* Disable deterministic output, enabling timestamp */ + + AslGbl_Deterministic = FALSE; + break; + case 'i': /* Produce preprocessor output file */ @@ -837,7 +866,7 @@ AslDoOptions ( AslGbl_HexOutputFlag = HEX_OUTPUT_C; break; - case 'p': /* data table flex/bison prototype */ + case 'p': /* data table flex/bison prototype */ AslGbl_DtLexBisonPrototype = TRUE; break; diff --git a/sys/contrib/dev/acpica/compiler/aslparseop.c b/sys/contrib/dev/acpica/compiler/aslparseop.c index a8dd04c86020..65e5b5b3ea59 100644 --- a/sys/contrib/dev/acpica/compiler/aslparseop.c +++ b/sys/contrib/dev/acpica/compiler/aslparseop.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -790,7 +790,7 @@ TrCreateConstantLeafOp ( DbgPrint (ASL_PARSE_OUTPUT, "\nCreateConstantLeafOp Ln/Col %u/%u NewOp %p " - "Op %s Value %8.8X%8.8X \n", + "Op %s Value %8.8X%8.8X\n", Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName (ParseOpcode), ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer)); @@ -817,6 +817,8 @@ TrAllocateOp ( ACPI_PARSE_OBJECT *Op; ACPI_PARSE_OBJECT *LatestOp; + ACPI_FUNCTION_NAME (TrAllocateOp); + Op = UtParseOpCacheCalloc (); @@ -861,7 +863,7 @@ TrAllocateOp ( } AslGbl_CommentState.LatestParseOp = Op; - CvDbgPrint ("TrAllocateOp=Set latest parse op to this op.\n"); + CvDbgPrint ("%s=Set latest parse op to this op.\n", ACPI_GET_FUNCTION_NAME); CvDbgPrint (" Op->Asl.ParseOpName = %s\n", AslGbl_CommentState.LatestParseOp->Asl.ParseOpName); CvDbgPrint (" Op->Asl.ParseOpcode = 0x%x\n", ParseOpcode); diff --git a/sys/contrib/dev/acpica/compiler/aslparser.y b/sys/contrib/dev/acpica/compiler/aslparser.y index 1517033a5be1..65a75af9763c 100644 --- a/sys/contrib/dev/acpica/compiler/aslparser.y +++ b/sys/contrib/dev/acpica/compiler/aslparser.y @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -208,7 +208,7 @@ AslLocalAllocate ( * These shift/reduce conflicts are expected. There should be zero * reduce/reduce conflicts. */ -%expect 127 +%expect 134 /*! [Begin] no source code translation */ diff --git a/sys/contrib/dev/acpica/compiler/aslpld.c b/sys/contrib/dev/acpica/compiler/aslpld.c index b9ef660f5d85..b1d9a05a7bdc 100644 --- a/sys/contrib/dev/acpica/compiler/aslpld.c +++ b/sys/contrib/dev/acpica/compiler/aslpld.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslpredef.c b/sys/contrib/dev/acpica/compiler/aslpredef.c index cad967d4ffab..4125c51c6895 100644 --- a/sys/contrib/dev/acpica/compiler/aslpredef.c +++ b/sys/contrib/dev/acpica/compiler/aslpredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -563,7 +563,7 @@ ApCheckForPredefinedName ( if (Name[0] == 0) { AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, - "zero length name found"); + "Zero length name found"); } /* All reserved names are prefixed with a single underscore */ diff --git a/sys/contrib/dev/acpica/compiler/aslprepkg.c b/sys/contrib/dev/acpica/compiler/aslprepkg.c index 4acd2ce35aea..9d0e861a0ff9 100644 --- a/sys/contrib/dev/acpica/compiler/aslprepkg.c +++ b/sys/contrib/dev/acpica/compiler/aslprepkg.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslprimaries.y b/sys/contrib/dev/acpica/compiler/aslprimaries.y index 69565defe405..608009d30da3 100644 --- a/sys/contrib/dev/acpica/compiler/aslprimaries.y +++ b/sys/contrib/dev/acpica/compiler/aslprimaries.y @@ -11,7 +11,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslprintf.c b/sys/contrib/dev/acpica/compiler/aslprintf.c index e0db152521d5..819a498f2b7d 100644 --- a/sys/contrib/dev/acpica/compiler/aslprintf.c +++ b/sys/contrib/dev/acpica/compiler/aslprintf.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -294,7 +294,7 @@ OpcParsePrintf ( if (StringToProcess) { NewString = UtLocalCacheCalloc (StringLength + 1); - strncpy (NewString, StartPosition, StringLength); + memcpy (NewString, StartPosition, StringLength); NewOp = TrAllocateOp (PARSEOP_STRING_LITERAL); NewOp->Asl.Value.String = NewString; @@ -383,7 +383,7 @@ OpcParsePrintf ( if (StringToProcess) { NewString = UtLocalCacheCalloc (StringLength + 1); - strncpy (NewString, StartPosition, StringLength); + memcpy (NewString, StartPosition, StringLength); NewOp = TrAllocateOp (PARSEOP_STRING_LITERAL); NewOp->Asl.Value.String = NewString; diff --git a/sys/contrib/dev/acpica/compiler/aslprune.c b/sys/contrib/dev/acpica/compiler/aslprune.c index 646aab2918e5..4fc3c063f1d6 100644 --- a/sys/contrib/dev/acpica/compiler/aslprune.c +++ b/sys/contrib/dev/acpica/compiler/aslprune.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslresource.c b/sys/contrib/dev/acpica/compiler/aslresource.c index 1cf4822ae6b5..8250e84fd783 100644 --- a/sys/contrib/dev/acpica/compiler/aslresource.c +++ b/sys/contrib/dev/acpica/compiler/aslresource.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -762,6 +762,12 @@ RsDoOneResourceDescriptor ( switch (Info->DescriptorTypeOp->Asl.ParseOpcode) { + + case PARSEOP_CLOCKINPUT: + + Rnode = RsDoClockInputDescriptor(Info); + break; + case PARSEOP_DMA: Rnode = RsDoDmaDescriptor (Info); @@ -782,6 +788,11 @@ RsDoOneResourceDescriptor ( Rnode = RsDoDwordMemoryDescriptor (Info); break; + case PARSEOP_DWORDPCC: + + Rnode = RsDoDwordPccDescriptor (Info); + break; + case PARSEOP_DWORDSPACE: Rnode = RsDoDwordSpaceDescriptor (Info); @@ -883,6 +894,11 @@ RsDoOneResourceDescriptor ( Rnode = RsDoQwordMemoryDescriptor (Info); break; + case PARSEOP_QWORDPCC: + + Rnode = RsDoQwordPccDescriptor (Info); + break; + case PARSEOP_QWORDSPACE: Rnode = RsDoQwordSpaceDescriptor (Info); @@ -957,6 +973,11 @@ RsDoOneResourceDescriptor ( Rnode = RsDoWordIoDescriptor (Info); break; + case PARSEOP_WORDPCC: + + Rnode = RsDoWordPccDescriptor (Info); + break; + case PARSEOP_WORDSPACE: Rnode = RsDoWordSpaceDescriptor (Info); diff --git a/sys/contrib/dev/acpica/compiler/aslresources.y b/sys/contrib/dev/acpica/compiler/aslresources.y index a5752b01c04f..fd8a33d3c0d6 100644 --- a/sys/contrib/dev/acpica/compiler/aslresources.y +++ b/sys/contrib/dev/acpica/compiler/aslresources.y @@ -11,7 +11,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -194,6 +194,7 @@ ResourceMacroTerm | DMATerm {} | DWordIOTerm {} | DWordMemoryTerm {} + | DWordPccTerm {} | DWordSpaceTerm {} | EndDependentFnTerm {} | ExtendedIOTerm {} @@ -214,11 +215,13 @@ ResourceMacroTerm | Memory32Term {} | PinConfigTerm {} | PinFunctionTerm {} + | ClockInputTerm {} | PinGroupTerm {} | PinGroupConfigTerm {} | PinGroupFunctionTerm {} | QWordIOTerm {} | QWordMemoryTerm {} + | QWordPccTerm {} | QWordSpaceTerm {} | RegisterTerm {} | SpiSerialBusTerm {} @@ -231,6 +234,7 @@ ResourceMacroTerm | VendorShortTerm {} | WordBusNumberTerm {} | WordIOTerm {} + | WordPccTerm {} | WordSpaceTerm {} ; @@ -316,6 +320,20 @@ DWordMemoryTerm error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} ; +DWordPccTerm + : PARSEOP_DWORDPCC + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);} + ByteConstExpr + OptionalByteConstExpr + OptionalStringData + OptionalNameString_Last + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4, + $4,$5,$6,$7);} + | PARSEOP_DWORDPCC + PARSEOP_OPEN_PAREN + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} + ; + DWordSpaceTerm : PARSEOP_DWORDSPACE PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);} @@ -666,6 +684,21 @@ PinFunctionTerm error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} ; +ClockInputTerm + : PARSEOP_CLOCKINPUT + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);} + DWordConstExpr /* 04: FrequencyNumerator */ + ',' WordConstExpr /* 06: FrequencyDivisor */ + ',' ClockScaleKeyword /* 08: Scale */ + ',' ClockModeKeyword /* 10: Mode*/ + OptionalStringData /* 11: ResourceSource */ + OptionalByteConstExpr /* 12: ResourceSourceIndex */ + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);} + | PARSEOP_CLOCKINPUT + PARSEOP_OPEN_PAREN + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} + ; + PinGroupTerm : PARSEOP_PINGROUP PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);} @@ -768,6 +801,20 @@ QWordMemoryTerm error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} ; +QWordPccTerm + : PARSEOP_QWORDPCC + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);} + ByteConstExpr + OptionalByteConstExpr + OptionalStringData + OptionalNameString_Last + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4, + $4,$5,$6,$7);} + | PARSEOP_QWORDPCC + PARSEOP_OPEN_PAREN + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} + ; + QWordSpaceTerm : PARSEOP_QWORDSPACE PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);} @@ -996,6 +1043,20 @@ WordIOTerm error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} ; +WordPccTerm + : PARSEOP_WORDPCC + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);} + ByteConstExpr + OptionalByteConstExpr + OptionalStringData + OptionalNameString_Last + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4, + $4,$5,$6,$7);} + | PARSEOP_WORDPCC + PARSEOP_OPEN_PAREN + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} + ; + WordSpaceTerm : PARSEOP_WORDSPACE PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);} diff --git a/sys/contrib/dev/acpica/compiler/aslrestype1.c b/sys/contrib/dev/acpica/compiler/aslrestype1.c index 0bf8d87d6e35..3f873da0e703 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype1.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslrestype1i.c b/sys/contrib/dev/acpica/compiler/aslrestype1i.c index 4dd5402e9dd9..02f4958d6d51 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype1i.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype1i.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2.c b/sys/contrib/dev/acpica/compiler/aslrestype2.c index e5771e059cc9..6fb613370691 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2d.c b/sys/contrib/dev/acpica/compiler/aslrestype2d.c index e34f2bee1034..3a7ca9189aff 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2d.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2d.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -158,11 +158,168 @@ /* * This module contains the Dword (32-bit) address space descriptors: * + * DWordPcc * DwordIO * DwordMemory * DwordSpace */ + +/******************************************************************************* + * + * FUNCTION: RsDoDwordPccDescriptor + * + * PARAMETERS: Info - Parse Op and resource template offset + * + * RETURN: Completed resource node + * + * DESCRIPTION: Construct a long "DWordPcc" descriptor + * + ******************************************************************************/ + +ASL_RESOURCE_NODE * +RsDoDwordPccDescriptor ( + ASL_RESOURCE_INFO *Info) +{ + AML_RESOURCE *Descriptor; + ACPI_PARSE_OBJECT *InitializerOp; + ACPI_PARSE_OBJECT *MinOp = NULL; + ACPI_PARSE_OBJECT *MaxOp = NULL; + ACPI_PARSE_OBJECT *LengthOp = NULL; + ACPI_PARSE_OBJECT *GranOp = NULL; + ASL_RESOURCE_NODE *Rnode; + UINT16 StringLength = 0; + UINT32 OptionIndex = 0; + UINT8 *OptionalFields; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + StringLength = RsGetStringDataLength (InitializerOp); + + Rnode = RsAllocateResourceNode ( + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); + + Descriptor = Rnode->Buffer; + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER; + + /* + * Initial descriptor length -- may be enlarged if there are + * optional fields present + */ + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); + Descriptor->Address32.ResourceLength = (UINT16) + (sizeof (AML_RESOURCE_ADDRESS32) - + sizeof (AML_RESOURCE_LARGE_HEADER)); + + + /* + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed) + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed) + * Bit [1] Decode Type, _DEC: 0 (do not care) + * BIT [0] Ignored (must be zero) + */ + Descriptor->Address32.Flags = 0b1100; + + // No type specific flags. Set to 0. + Descriptor->Address32.SpecificFlags = 0; + + // must be set to zero if _MAX == _MIN. + Descriptor->Address32.Granularity = 0x0; + /* Process all child initialization nodes */ + + // No translation offset. + Descriptor->Address32.TranslationOffset = 0; + + // Pcc is unique address. + Descriptor->Address32.AddressLength = 1; + + for (i = 0; InitializerOp; i++) + { + switch (i) + { + + case 0: /* Address Min = Max */ + + Descriptor->Address32.Minimum = + (UINT32) InitializerOp->Asl.Value.Integer; + Descriptor->Address32.Maximum = + (UINT32) InitializerOp->Asl.Value.Integer; + + break; + + case 1: /* ResSourceIndex [Optional Field - BYTE] */ + + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) + { + /* Found a valid ResourceSourceIndex */ + + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; + OptionIndex++; + Descriptor->Address32.ResourceLength++; + ResSourceIndex = TRUE; + } + break; + + case 2: /* ResSource [Optional Field - STRING] */ + + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && + (InitializerOp->Asl.Value.String)) + { + if (StringLength) + { + /* Found a valid ResourceSource */ + + Descriptor->Address32.ResourceLength = (UINT16) + (Descriptor->Address32.ResourceLength + StringLength); + + strcpy ((char *) + &OptionalFields[OptionIndex], + InitializerOp->Asl.Value.String); + + /* ResourceSourceIndex must also be valid */ + + if (!ResSourceIndex) + { + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, + InitializerOp, NULL); + } + } + } + + break; + + case 3: // DescriptorName + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp); + break; + + default: + + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); + break; + } + + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( + (UINT64) Descriptor->Address32.Minimum, + (UINT64) Descriptor->Address32.Maximum, + (UINT64) Descriptor->Address32.AddressLength, + (UINT64) Descriptor->Address32.Granularity, + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + + OptionIndex + StringLength; + return (Rnode); +} + + /******************************************************************************* * * FUNCTION: RsDoDwordIoDescriptor diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2e.c b/sys/contrib/dev/acpica/compiler/aslrestype2e.c index 91e25e7880a1..4e6293617b94 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2e.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2e.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2q.c b/sys/contrib/dev/acpica/compiler/aslrestype2q.c index 862979011f79..6ebe149a3c14 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2q.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2q.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -160,6 +160,7 @@ * * QWordIO * QWordMemory + * QwordPcc * QWordSpace */ @@ -615,6 +616,161 @@ RsDoQwordMemoryDescriptor ( /******************************************************************************* * + * FUNCTION: RsDoQwordPccDescriptor + * + * PARAMETERS: Info - Parse Op and resource template offset + * + * RETURN: Completed resource node + * + * DESCRIPTION: Construct a long "QWordPcc" descriptor + * + ******************************************************************************/ + +ASL_RESOURCE_NODE * +RsDoQwordPccDescriptor ( + ASL_RESOURCE_INFO *Info) +{ + AML_RESOURCE *Descriptor; + ACPI_PARSE_OBJECT *InitializerOp; + ACPI_PARSE_OBJECT *MinOp = NULL; + ACPI_PARSE_OBJECT *MaxOp = NULL; + ACPI_PARSE_OBJECT *LengthOp = NULL; + ACPI_PARSE_OBJECT *GranOp = NULL; + ASL_RESOURCE_NODE *Rnode; + UINT16 StringLength = 0; + UINT32 OptionIndex = 0; + UINT8 *OptionalFields; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + StringLength = RsGetStringDataLength (InitializerOp); + + Rnode = RsAllocateResourceNode ( + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); + + Descriptor = Rnode->Buffer; + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER; + + /* + * Initial descriptor length -- may be enlarged if there are + * optional fields present + */ + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); + Descriptor->Address32.ResourceLength = (UINT16) + (sizeof (AML_RESOURCE_ADDRESS32) - + sizeof (AML_RESOURCE_LARGE_HEADER)); + + + /* + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed) + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed) + * Bit [1] Decode Type, _DEC: 0 (do not care) + * BIT [0] Ignored (must be zero) + */ + Descriptor->Address32.Flags = 0b1100; + + // No type specific flags. Set to 0. + Descriptor->Address32.SpecificFlags = 0; + + // must be set to zero if _MAX == _MIN. + Descriptor->Address32.Granularity = 0x0; + /* Process all child initialization nodes */ + + // No translation offset. + Descriptor->Address32.TranslationOffset = 0; + + // Pcc is unique address. + Descriptor->Address32.AddressLength = 1; + + for (i = 0; InitializerOp; i++) + { + switch (i) + { + + case 0: /* Address Min = Max */ + + Descriptor->Address32.Minimum = + (UINT32) InitializerOp->Asl.Value.Integer; + Descriptor->Address32.Maximum = + (UINT32) InitializerOp->Asl.Value.Integer; + + break; + + case 1: /* ResSourceIndex [Optional Field - BYTE] */ + + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) + { + /* Found a valid ResourceSourceIndex */ + + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; + OptionIndex++; + Descriptor->Address32.ResourceLength++; + ResSourceIndex = TRUE; + } + break; + + case 2: /* ResSource [Optional Field - STRING] */ + + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && + (InitializerOp->Asl.Value.String)) + { + if (StringLength) + { + /* Found a valid ResourceSource */ + + Descriptor->Address32.ResourceLength = (UINT16) + (Descriptor->Address32.ResourceLength + StringLength); + + strcpy ((char *) + &OptionalFields[OptionIndex], + InitializerOp->Asl.Value.String); + + /* ResourceSourceIndex must also be valid */ + + if (!ResSourceIndex) + { + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, + InitializerOp, NULL); + } + } + } + + break; + + case 3: // DescriptorName + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp); + break; + + default: + + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); + break; + } + + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( + (UINT64) Descriptor->Address32.Minimum, + (UINT64) Descriptor->Address32.Maximum, + (UINT64) Descriptor->Address32.AddressLength, + (UINT64) Descriptor->Address32.Granularity, + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + + OptionIndex + StringLength; + return (Rnode); +} + + +/******************************************************************************* + * * FUNCTION: RsDoQwordSpaceDescriptor * * PARAMETERS: Info - Parse Op and resource template offset diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2s.c b/sys/contrib/dev/acpica/compiler/aslrestype2s.c index 7a25e9b367cc..f47402d4e025 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2s.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2s.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -1469,7 +1469,7 @@ RsDoCsi2SerialBusDescriptor ( case 2: /* Local Port Instance [Integer] (_PRT) */ - RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0); + RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 2, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LOCALPORT, CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 2, 6); break; @@ -1550,7 +1550,6 @@ RsDoPinFunctionDescriptor ( UINT16 PinListLength; UINT16 DescriptorSize; UINT32 CurrentByteOffset; - UINT32 PinCount = 0; UINT32 i; InitializerOp = Info->DescriptorTypeOp->Asl.Child; @@ -1668,15 +1667,10 @@ RsDoPinFunctionDescriptor ( default: /* * PINs come through here, repeatedly. Each PIN must be a WORD. - * NOTE: there is no "length" field for this, so from ACPI spec: - * The number of pins in the table can be calculated from: - * PinCount = (Resource Source Name Offset - Pin Table Offset) / 2 - * (implies resource source must immediately follow the pin list.) * Name: _PIN */ *PinList = (UINT16) InitializerOp->Asl.Value.Integer; PinList++; - PinCount++; /* Case 8: First pin number in list */ @@ -1708,6 +1702,115 @@ RsDoPinFunctionDescriptor ( return (Rnode); } +/******************************************************************************* + * + * FUNCTION: RsDoClockInputDescriptor + * + * PARAMETERS: Info - Parse Op and resource template offset + * + * RETURN: Completed resource node + * + * DESCRIPTION: Construct a long "ClockInput" descriptor + * + ******************************************************************************/ + +ASL_RESOURCE_NODE * +RsDoClockInputDescriptor ( + ASL_RESOURCE_INFO *Info) +{ + AML_RESOURCE *Descriptor; + ACPI_PARSE_OBJECT *InitializerOp; + ASL_RESOURCE_NODE *Rnode; + char *ResourceSourceString = NULL; + UINT8 *ResourceSourceIndex = NULL; + UINT16 ResSourceLength; + UINT16 DescriptorSize; + UINT32 i; + UINT32 CurrentByteOffset; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; + + /* + * Calculate lengths for fields that have variable length: + * 1) Resource Source string + */ + ResSourceLength = RsGetStringDataLength (InitializerOp); + + DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_CLOCK_INPUT) + ResSourceLength + 1; + + /* Allocate the local resource node and initialize */ + + Rnode = RsAllocateResourceNode (DescriptorSize + + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; + Descriptor->ClockInput.ResourceLength = DescriptorSize; + Descriptor->ClockInput.DescriptorType = ACPI_RESOURCE_NAME_CLOCK_INPUT; + Descriptor->ClockInput.RevisionId = AML_RESOURCE_CLOCK_INPUT_REVISION; + + /* Build pointers to optional areas */ + + if (ResSourceLength){ + ResourceSourceIndex = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_CLOCK_INPUT)); + ResourceSourceString = ACPI_ADD_PTR (char, Descriptor, sizeof (AML_RESOURCE_CLOCK_INPUT) + 1); + } + + /* Process all child initialization nodes */ + + for (i = 0; InitializerOp; i++) + { + switch (i) + { + case 0: + Descriptor->ClockInput.FrequencyNumerator = (UINT32)InitializerOp->Asl.Value.Integer; + RsCreateDwordField (InitializerOp, ACPI_RESTAG_FQN, + CurrentByteOffset + ASL_RESDESC_OFFSET (ClockInput.FrequencyNumerator)); + + break; + + case 1: + Descriptor->ClockInput.FrequencyDivisor = (UINT16)InitializerOp->Asl.Value.Integer; + RsCreateWordField (InitializerOp, ACPI_RESTAG_FQD, + CurrentByteOffset + ASL_RESDESC_OFFSET (ClockInput.FrequencyDivisor)); + + break; + + case 2: + RsSetFlagBits16 (&Descriptor->ClockInput.Flags, InitializerOp, 1, 0); + break; + + case 3: + RsSetFlagBits16 (&Descriptor->ClockInput.Flags, InitializerOp, 0, 0); + break; + + case 4: /* ResSource String [Optional Field] */ + + if (ResourceSourceString) + { + /* Copy string to the descriptor */ + + strcpy (ResourceSourceString, InitializerOp->Asl.Value.String); + } + break; + + case 5: /* ResSource Index [Optional Field] */ + if (ResourceSourceIndex) + { + *ResourceSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; + } + break; + + default: + break; + } + + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + + return (Rnode); +} + /******************************************************************************* * @@ -1736,7 +1839,6 @@ RsDoPinConfigDescriptor ( UINT16 PinListLength; UINT16 DescriptorSize; UINT32 CurrentByteOffset; - UINT32 PinCount = 0; UINT32 i; InitializerOp = Info->DescriptorTypeOp->Asl.Child; @@ -1868,15 +1970,10 @@ RsDoPinConfigDescriptor ( default: /* * PINs come through here, repeatedly. Each PIN must be a WORD. - * NOTE: there is no "length" field for this, so from ACPI spec: - * The number of pins in the table can be calculated from: - * PinCount = (Resource Source Name Offset - Pin Table Offset) / 2 - * (implies resource source must immediately follow the pin list.) * Name: _PIN */ *PinList = (UINT16) InitializerOp->Asl.Value.Integer; PinList++; - PinCount++; /* Case 8: First pin number in list */ @@ -1936,7 +2033,6 @@ RsDoPinGroupDescriptor ( UINT16 PinListLength; UINT16 DescriptorSize; UINT32 CurrentByteOffset; - UINT32 PinCount = 0; UINT32 i; InitializerOp = Info->DescriptorTypeOp->Asl.Child; @@ -2022,15 +2118,10 @@ RsDoPinGroupDescriptor ( default: /* * PINs come through here, repeatedly. Each PIN must be a WORD. - * NOTE: there is no "length" field for this, so from ACPI spec: - * The number of pins in the table can be calculated from: - * PinCount = (Resource Source Name Offset - Pin Table Offset) / 2 - * (implies resource source must immediately follow the pin list.) * Name: _PIN */ *PinList = (UINT16) InitializerOp->Asl.Value.Integer; PinList++; - PinCount++; /* Case 3: First pin number in list */ diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2w.c b/sys/contrib/dev/acpica/compiler/aslrestype2w.c index d3b069fea207..cc8a31804977 100644 --- a/sys/contrib/dev/acpica/compiler/aslrestype2w.c +++ b/sys/contrib/dev/acpica/compiler/aslrestype2w.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -160,6 +160,7 @@ * * WordIO * WordMemory + * WordPcc * WordSpace */ @@ -591,6 +592,161 @@ RsDoWordBusNumberDescriptor ( /******************************************************************************* * + * FUNCTION: RsDoWordPccDescriptor + * + * PARAMETERS: Info - Parse Op and resource template offset + * + * RETURN: Completed resource node + * + * DESCRIPTION: Construct a long "WordPcc" descriptor + * + ******************************************************************************/ + +ASL_RESOURCE_NODE * +RsDoWordPccDescriptor ( + ASL_RESOURCE_INFO *Info) +{ + AML_RESOURCE *Descriptor; + ACPI_PARSE_OBJECT *InitializerOp; + ACPI_PARSE_OBJECT *MinOp = NULL; + ACPI_PARSE_OBJECT *MaxOp = NULL; + ACPI_PARSE_OBJECT *LengthOp = NULL; + ACPI_PARSE_OBJECT *GranOp = NULL; + ASL_RESOURCE_NODE *Rnode; + UINT16 StringLength = 0; + UINT32 OptionIndex = 0; + UINT8 *OptionalFields; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + StringLength = RsGetStringDataLength (InitializerOp); + + Rnode = RsAllocateResourceNode ( + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); + + Descriptor = Rnode->Buffer; + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER; + + /* + * Initial descriptor length -- may be enlarged if there are + * optional fields present + */ + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); + Descriptor->Address32.ResourceLength = (UINT16) + (sizeof (AML_RESOURCE_ADDRESS32) - + sizeof (AML_RESOURCE_LARGE_HEADER)); + + + /* + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed) + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed) + * Bit [1] Decode Type, _DEC: 0 (do not care) + * BIT [0] Ignored (must be zero) + */ + Descriptor->Address32.Flags = 0b1100; + + // No type specific flags. Set to 0. + Descriptor->Address32.SpecificFlags = 0; + + // must be set to zero if _MAX == _MIN. + Descriptor->Address32.Granularity = 0x0; + /* Process all child initialization nodes */ + + // No translation offset. + Descriptor->Address32.TranslationOffset = 0; + + // Pcc is unique address. + Descriptor->Address32.AddressLength = 1; + + for (i = 0; InitializerOp; i++) + { + switch (i) + { + + case 0: /* Address Min = Max */ + + Descriptor->Address32.Minimum = + (UINT32) InitializerOp->Asl.Value.Integer; + Descriptor->Address32.Maximum = + (UINT32) InitializerOp->Asl.Value.Integer; + + break; + + case 1: /* ResSourceIndex [Optional Field - BYTE] */ + + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) + { + /* Found a valid ResourceSourceIndex */ + + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; + OptionIndex++; + Descriptor->Address32.ResourceLength++; + ResSourceIndex = TRUE; + } + break; + + case 2: /* ResSource [Optional Field - STRING] */ + + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && + (InitializerOp->Asl.Value.String)) + { + if (StringLength) + { + /* Found a valid ResourceSource */ + + Descriptor->Address32.ResourceLength = (UINT16) + (Descriptor->Address32.ResourceLength + StringLength); + + strcpy ((char *) + &OptionalFields[OptionIndex], + InitializerOp->Asl.Value.String); + + /* ResourceSourceIndex must also be valid */ + + if (!ResSourceIndex) + { + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, + InitializerOp, NULL); + } + } + } + + break; + + case 3: // DescriptorName + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp); + break; + + default: + + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); + break; + } + + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( + (UINT64) Descriptor->Address32.Minimum, + (UINT64) Descriptor->Address32.Maximum, + (UINT64) Descriptor->Address32.AddressLength, + (UINT64) Descriptor->Address32.Granularity, + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + + OptionIndex + StringLength; + return (Rnode); +} + + +/******************************************************************************* + * * FUNCTION: RsDoWordSpaceDescriptor * * PARAMETERS: Info - Parse Op and resource template offset diff --git a/sys/contrib/dev/acpica/compiler/aslrules.y b/sys/contrib/dev/acpica/compiler/aslrules.y index 79aa2210abb8..c96d4cc75db6 100644 --- a/sys/contrib/dev/acpica/compiler/aslrules.y +++ b/sys/contrib/dev/acpica/compiler/aslrules.y @@ -11,7 +11,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslstartup.c b/sys/contrib/dev/acpica/compiler/aslstartup.c index ea3075bc309a..628a5c1ada2d 100644 --- a/sys/contrib/dev/acpica/compiler/aslstartup.c +++ b/sys/contrib/dev/acpica/compiler/aslstartup.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -317,7 +317,7 @@ AslDetectSourceFileType ( else { fprintf (stderr, - "Binary file does not contain a valid ACPI table\n"); + "Binary file does not contain a valid standard ACPI table\n"); } Type = ASL_INPUT_TYPE_BINARY; diff --git a/sys/contrib/dev/acpica/compiler/aslstubs.c b/sys/contrib/dev/acpica/compiler/aslstubs.c index f49fb41410d4..50bda4b83fe1 100644 --- a/sys/contrib/dev/acpica/compiler/aslstubs.c +++ b/sys/contrib/dev/acpica/compiler/aslstubs.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslsupport.l b/sys/contrib/dev/acpica/compiler/aslsupport.l index 0daec602e148..74ac78d8c4ef 100644 --- a/sys/contrib/dev/acpica/compiler/aslsupport.l +++ b/sys/contrib/dev/acpica/compiler/aslsupport.l @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -195,7 +195,7 @@ AslParserCleanup ( * * DESCRIPTION: Handle #line directives emitted by the preprocessor. * - * The #line directive is emitted by the preprocesser, and is used to + * The #line directive is emitted by the preprocessor, and is used to * pass through line numbers from the original source code file to the * preprocessor output file (.i). This allows any compiler-generated * error messages to be displayed with the correct line number. diff --git a/sys/contrib/dev/acpica/compiler/aslsupport.y b/sys/contrib/dev/acpica/compiler/aslsupport.y index 3f19af2f48b1..3bd09a55e704 100644 --- a/sys/contrib/dev/acpica/compiler/aslsupport.y +++ b/sys/contrib/dev/acpica/compiler/aslsupport.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asltokens.y b/sys/contrib/dev/acpica/compiler/asltokens.y index c43561e7a4a3..50d6031e5ed0 100644 --- a/sys/contrib/dev/acpica/compiler/asltokens.y +++ b/sys/contrib/dev/acpica/compiler/asltokens.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -256,6 +256,7 @@ NoEcho(' %token <i> PARSEOP_DWORDCONST %token <i> PARSEOP_DWORDIO %token <i> PARSEOP_DWORDMEMORY +%token <i> PARSEOP_DWORDPCC %token <i> PARSEOP_DWORDSPACE %token <i> PARSEOP_EISAID %token <i> PARSEOP_ELSE @@ -399,11 +400,18 @@ NoEcho(' %token <i> PARSEOP_PIN_PULLDEFAULT %token <i> PARSEOP_PIN_PULLDOWN %token <i> PARSEOP_PIN_PULLUP +%token <i> PARSEOP_CLOCKINPUT +%token <i> PARSEOP_CLOCK_HZ +%token <i> PARSEOP_CLOCK_KHZ +%token <i> PARSEOP_CLOCK_MHZ +%token <i> PARSEOP_CLOCK_FIXED +%token <i> PARSEOP_CLOCK_VARIABLE %token <i> PARSEOP_POWERRESOURCE %token <i> PARSEOP_PROCESSOR %token <i> PARSEOP_QWORDCONST %token <i> PARSEOP_QWORDIO %token <i> PARSEOP_QWORDMEMORY +%token <i> PARSEOP_QWORDPCC %token <i> PARSEOP_QWORDSPACE %token <i> PARSEOP_RANGETYPE_ENTIRE %token <i> PARSEOP_RANGETYPE_ISAONLY @@ -491,6 +499,7 @@ NoEcho(' %token <i> PARSEOP_WORDBUSNUMBER %token <i> PARSEOP_WORDCONST %token <i> PARSEOP_WORDIO +%token <i> PARSEOP_WORDPCC %token <i> PARSEOP_WORDSPACE %token <i> PARSEOP_XFERSIZE_8 %token <i> PARSEOP_XFERSIZE_16 diff --git a/sys/contrib/dev/acpica/compiler/asltransform.c b/sys/contrib/dev/acpica/compiler/asltransform.c index 54f44363302b..c58f771354f1 100644 --- a/sys/contrib/dev/acpica/compiler/asltransform.c +++ b/sys/contrib/dev/acpica/compiler/asltransform.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/asltree.c b/sys/contrib/dev/acpica/compiler/asltree.c index 0454225d694c..9237176c94b5 100644 --- a/sys/contrib/dev/acpica/compiler/asltree.c +++ b/sys/contrib/dev/acpica/compiler/asltree.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -467,6 +467,7 @@ TrLinkOpChildren ( UINT32 i; BOOLEAN FirstChild; + ACPI_FUNCTION_NAME (TrLinkOpChildren); va_start (ap, NumChildren); @@ -624,7 +625,7 @@ TrLinkOpChildren ( if (AcpiGbl_CaptureComments) { AslGbl_CommentState.LatestParseOp = Op; - CvDbgPrint ("TrLinkOpChildren=====Set latest parse op to this op.\n"); + CvDbgPrint ("%s=====Set latest parse op to this op.\n", ACPI_GET_FUNCTION_NAME); } return (Op); diff --git a/sys/contrib/dev/acpica/compiler/asltypes.h b/sys/contrib/dev/acpica/compiler/asltypes.h index d5689dea58b0..50234d71f0a7 100644 --- a/sys/contrib/dev/acpica/compiler/asltypes.h +++ b/sys/contrib/dev/acpica/compiler/asltypes.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -336,7 +336,7 @@ typedef struct asl_file_desc typedef struct asl_cache_info { void *Next; - char Buffer[1]; + char Buffer[]; } ASL_CACHE_INFO; diff --git a/sys/contrib/dev/acpica/compiler/asltypes.y b/sys/contrib/dev/acpica/compiler/asltypes.y index ba98362cd323..2c2669559585 100644 --- a/sys/contrib/dev/acpica/compiler/asltypes.y +++ b/sys/contrib/dev/acpica/compiler/asltypes.y @@ -9,7 +9,7 @@ NoEcho(' * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -359,6 +359,8 @@ NoEcho(' %type <n> WireModeKeyword %type <n> XferSizeKeyword %type <n> XferTypeKeyword +%type <n> ClockScaleKeyword +%type <n> ClockModeKeyword /* Types */ @@ -411,11 +413,13 @@ NoEcho(' /* Resource Descriptors */ +%type <n> ClockInputTerm %type <n> ConnectionTerm %type <n> Csi2SerialBusTerm %type <n> DMATerm %type <n> DWordIOTerm %type <n> DWordMemoryTerm +%type <n> DWordPccTerm %type <n> DWordSpaceTerm %type <n> EndDependentFnTerm %type <n> ExtendedIOTerm @@ -443,6 +447,7 @@ NoEcho(' %type <n> PinGroupFunctionTerm %type <n> QWordIOTerm %type <n> QWordMemoryTerm +%type <n> QWordPccTerm %type <n> QWordSpaceTerm %type <n> RegisterTerm %type <n> SpiSerialBusTerm @@ -455,6 +460,7 @@ NoEcho(' %type <n> VendorShortTerm %type <n> WordBusNumberTerm %type <n> WordIOTerm +%type <n> WordPccTerm %type <n> WordSpaceTerm /* Local types that help construct the AML, not in ACPI spec */ diff --git a/sys/contrib/dev/acpica/compiler/aslutils.c b/sys/contrib/dev/acpica/compiler/aslutils.c index 089101b1a995..267ad8b77e13 100644 --- a/sys/contrib/dev/acpica/compiler/aslutils.c +++ b/sys/contrib/dev/acpica/compiler/aslutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -610,7 +610,7 @@ UtSetParseOpName ( * * FUNCTION: UtDisplayOneSummary * - * PARAMETERS: FileID - ID of outpout file + * PARAMETERS: FileID - ID of output file * * RETURN: None * @@ -733,7 +733,7 @@ UtDisplayOneSummary ( * * FUNCTION: UtDisplayErrorSummary * - * PARAMETERS: FileID - ID of outpout file + * PARAMETERS: FileID - ID of output file * * RETURN: None * @@ -800,7 +800,7 @@ UtDisplayErrorSummary ( * * FUNCTION: UtDisplaySummary * - * PARAMETERS: FileID - ID of outpout file + * PARAMETERS: FileID - ID of output file * * RETURN: None * diff --git a/sys/contrib/dev/acpica/compiler/asluuid.c b/sys/contrib/dev/acpica/compiler/asluuid.c index 3512a962962b..712a06fda951 100644 --- a/sys/contrib/dev/acpica/compiler/asluuid.c +++ b/sys/contrib/dev/acpica/compiler/asluuid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslwalks.c b/sys/contrib/dev/acpica/compiler/aslwalks.c index 16c7526aaa52..db2c9daa455e 100644 --- a/sys/contrib/dev/acpica/compiler/aslwalks.c +++ b/sys/contrib/dev/acpica/compiler/aslwalks.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslxref.c b/sys/contrib/dev/acpica/compiler/aslxref.c index 7cc72513077e..eb61b1d461cd 100644 --- a/sys/contrib/dev/acpica/compiler/aslxref.c +++ b/sys/contrib/dev/acpica/compiler/aslxref.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/aslxrefout.c b/sys/contrib/dev/acpica/compiler/aslxrefout.c index 1ba6f396985a..67e26b3e69de 100644 --- a/sys/contrib/dev/acpica/compiler/aslxrefout.c +++ b/sys/contrib/dev/acpica/compiler/aslxrefout.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/cvcompiler.c b/sys/contrib/dev/acpica/compiler/cvcompiler.c index 28fe35bbaa9c..e42dfa8066ac 100644 --- a/sys/contrib/dev/acpica/compiler/cvcompiler.c +++ b/sys/contrib/dev/acpica/compiler/cvcompiler.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/cvdisasm.c b/sys/contrib/dev/acpica/compiler/cvdisasm.c index 62feb7b1f33c..ebc93a0bd194 100644 --- a/sys/contrib/dev/acpica/compiler/cvdisasm.c +++ b/sys/contrib/dev/acpica/compiler/cvdisasm.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/cvparser.c b/sys/contrib/dev/acpica/compiler/cvparser.c index 978fa2b0536d..724daa0dea67 100644 --- a/sys/contrib/dev/acpica/compiler/cvparser.c +++ b/sys/contrib/dev/acpica/compiler/cvparser.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dtcompile.c b/sys/contrib/dev/acpica/compiler/dtcompile.c index 7899a54b1eb0..873baf397e47 100644 --- a/sys/contrib/dev/acpica/compiler/dtcompile.c +++ b/sys/contrib/dev/acpica/compiler/dtcompile.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -452,6 +452,48 @@ DtCompileDataTable ( } /* + * If the first field is named "CDAT Table Length" (not "Signature"), + * assume that we have a CDAT table (whose table header does not have + * a signature). Instead, the TableLength field is where the + * signature would (normally) be. + */ + else if (!strcmp ((*FieldList)->Name, "CDAT Table Length")) + { + /* No longer true: (However, use this technique in the disassembler) + * We are assuming that there + * should be at least one non-ASCII byte in the 4-character + * Signature field, (At least the high-order byte should be zero). + */ + Status = DtCompileTable (FieldList, AcpiDmTableInfoCdatTableHdr, + &AslGbl_RootTable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* Compile the CDAT */ + + DtPushSubtable (AslGbl_RootTable); + Status = DtCompileCdat ((void **) FieldList); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* + * Set the overall table length and the table checksum. + * The entire compiled table (including the CDAT table header with + * the table length and checksum) is in AslGbl_RootTable->Buffer. + */ + DtSetTableLength (); + DtSetTableChecksum (&ACPI_CAST_PTR (ACPI_TABLE_CDAT, AslGbl_RootTable->Buffer)->Checksum); + + DtDumpFieldList (RootField); + DtDumpSubtableList (); + return (AE_OK); + } + + /* * All other tables must use the common ACPI table header. Insert the * current iASL IDs (name, version), and compile the header now. */ diff --git a/sys/contrib/dev/acpica/compiler/dtcompiler.h b/sys/contrib/dev/acpica/compiler/dtcompiler.h index e99b5c71b00b..2a066936b41e 100644 --- a/sys/contrib/dev/acpica/compiler/dtcompiler.h +++ b/sys/contrib/dev/acpica/compiler/dtcompiler.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -578,7 +578,11 @@ DtCompileAsf ( void **PFieldList); ACPI_STATUS -DtCompileCpep ( +DtCompileAspt ( + void **PFieldList); + +ACPI_STATUS +DtCompileCdat ( void **PFieldList); ACPI_STATUS @@ -586,6 +590,10 @@ DtCompileCedt ( void **PFieldList); ACPI_STATUS +DtCompileCpep ( + void **PFieldList); + +ACPI_STATUS DtCompileCsrt ( void **PFieldList); @@ -606,6 +614,10 @@ DtCompileEinj ( void **PFieldList); ACPI_STATUS +DtCompileErdt ( + void **PFieldList); + +ACPI_STATUS DtCompileErst ( void **PFieldList); @@ -650,19 +662,23 @@ DtCompileMcfg ( void **PFieldList); ACPI_STATUS +DtCompileMpam ( + void **PFieldList); + +ACPI_STATUS DtCompileMpst ( void **PFieldList); ACPI_STATUS -DtCompileMsct ( +DtCompileMrrm ( void **PFieldList); ACPI_STATUS -DtCompileNfit ( +DtCompileMsct ( void **PFieldList); ACPI_STATUS -DtCompileNhlt ( +DtCompileNfit ( void **PFieldList); ACPI_STATUS @@ -690,10 +706,22 @@ DtCompilePrmt ( void **PFieldList); ACPI_STATUS +DtCompileRas2 ( + void **PFieldList); + +ACPI_STATUS DtCompileRgrt ( void **PFieldList); ACPI_STATUS +DtCompileRhct ( + void **PFieldList); + +ACPI_STATUS +DtCompileRimt ( + void **PFieldList); + +ACPI_STATUS DtCompileRsdt ( void **PFieldList); @@ -769,10 +797,13 @@ extern const unsigned char TemplateAest[]; extern const unsigned char TemplateAgdi[]; extern const unsigned char TemplateApmt[]; extern const unsigned char TemplateAsf[]; +extern const unsigned char TemplateAspt[]; extern const unsigned char TemplateBoot[]; extern const unsigned char TemplateBdat[]; extern const unsigned char TemplateBert[]; extern const unsigned char TemplateBgrt[]; +extern const unsigned char TemplateCcel[]; +extern const unsigned char TemplateCdat[]; extern const unsigned char TemplateCedt[]; extern const unsigned char TemplateCpep[]; extern const unsigned char TemplateCsrt[]; @@ -782,6 +813,7 @@ extern const unsigned char TemplateDmar[]; extern const unsigned char TemplateDrtm[]; extern const unsigned char TemplateEcdt[]; extern const unsigned char TemplateEinj[]; +extern const unsigned char TemplateErdt[]; extern const unsigned char TemplateErst[]; extern const unsigned char TemplateFadt[]; extern const unsigned char TemplateFpdt[]; @@ -795,11 +827,12 @@ extern const unsigned char TemplateLpit[]; extern const unsigned char TemplateMadt[]; extern const unsigned char TemplateMcfg[]; extern const unsigned char TemplateMchi[]; +extern const unsigned char TemplateMpam[]; extern const unsigned char TemplateMpst[]; +extern const unsigned char TemplateMrrm[]; extern const unsigned char TemplateMsct[]; extern const unsigned char TemplateMsdm[]; extern const unsigned char TemplateNfit[]; -extern const unsigned char TemplateNhlt[]; extern const unsigned char TemplatePcct[]; extern const unsigned char TemplatePdtt[]; extern const unsigned char TemplatePhat[]; @@ -807,7 +840,10 @@ extern const unsigned char TemplatePmtt[]; extern const unsigned char TemplatePptt[]; extern const unsigned char TemplatePrmt[]; extern const unsigned char TemplateRasf[]; +extern const unsigned char TemplateRas2[]; extern const unsigned char TemplateRgrt[]; +extern const unsigned char TemplateRhct[]; +extern const unsigned char TemplateRimt[]; extern const unsigned char TemplateRsdt[]; extern const unsigned char TemplateS3pt[]; extern const unsigned char TemplateSbst[]; diff --git a/sys/contrib/dev/acpica/compiler/dtcompilerparser.l b/sys/contrib/dev/acpica/compiler/dtcompilerparser.l index c0e6728a3882..322ee225a60d 100644 --- a/sys/contrib/dev/acpica/compiler/dtcompilerparser.l +++ b/sys/contrib/dev/acpica/compiler/dtcompilerparser.l @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dtcompilerparser.y b/sys/contrib/dev/acpica/compiler/dtcompilerparser.y index 57b7d5979959..f160434e0959 100644 --- a/sys/contrib/dev/acpica/compiler/dtcompilerparser.y +++ b/sys/contrib/dev/acpica/compiler/dtcompilerparser.y @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dtexpress.c b/sys/contrib/dev/acpica/compiler/dtexpress.c index eb44abcba7c1..65f10aac9f00 100644 --- a/sys/contrib/dev/acpica/compiler/dtexpress.c +++ b/sys/contrib/dev/acpica/compiler/dtexpress.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -480,10 +480,11 @@ static void DtInsertLabelField ( DT_FIELD *Field) { + ACPI_FUNCTION_NAME (DtInsertLabelField); DbgPrint (ASL_DEBUG_OUTPUT, - "DtInsertLabelField: Found Label : %s at output table offset %X\n", - Field->Value, Field->TableOffset); + "%s: Found Label : %s at output table offset %X\n", + ACPI_GET_FUNCTION_NAME, Field->Value, Field->TableOffset); Field->NextLabel = AslGbl_LabelList; AslGbl_LabelList = Field; diff --git a/sys/contrib/dev/acpica/compiler/dtfield.c b/sys/contrib/dev/acpica/compiler/dtfield.c index a2051bcb2a37..ded7315aaa3f 100644 --- a/sys/contrib/dev/acpica/compiler/dtfield.c +++ b/sys/contrib/dev/acpica/compiler/dtfield.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -281,8 +281,8 @@ DtCompileString ( if (Length > ByteLength) { sprintf (AslGbl_MsgBuffer, - "Maximum %u characters, found %u characters [%s]", - ByteLength, Length, Field->Value); + "Maximum %u characters, found %u characters [%.*s]", + ByteLength, Length, (ASL_MSG_BUFFER_SIZE / 2), Field->Value); DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer); Length = ByteLength; } @@ -678,7 +678,7 @@ DtCompileFlag ( case ACPI_DMT_FLAGS8_2: - BitPosition = 2; + BitPosition = 2; BitLength = 8; break; diff --git a/sys/contrib/dev/acpica/compiler/dtio.c b/sys/contrib/dev/acpica/compiler/dtio.c index d24001689a8a..7bcf16b8f9d1 100644 --- a/sys/contrib/dev/acpica/compiler/dtio.c +++ b/sys/contrib/dev/acpica/compiler/dtio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -285,7 +285,7 @@ DtTrim ( ReturnString = UtLocalCacheCalloc (Length + 1); if (strlen (Start)) { - strncpy (ReturnString, Start, Length); + memcpy (ReturnString, Start, Length); } ReturnString[Length] = 0; @@ -377,7 +377,7 @@ DtParseLine ( Length = ACPI_PTR_DIFF (End, Start); TmpName = UtLocalCalloc (Length + 1); - strncpy (TmpName, Start, Length); + memcpy (TmpName, Start, Length); Name = DtTrim (TmpName); ACPI_FREE (TmpName); @@ -425,7 +425,7 @@ DtParseLine ( Length = ACPI_PTR_DIFF (End, Start); TmpValue = UtLocalCalloc (Length + 1); - strncpy (TmpValue, Start, Length); + memcpy (TmpValue, Start, Length); Value = DtTrim (TmpValue); ACPI_FREE (TmpValue); @@ -952,7 +952,7 @@ DtDumpBuffer ( UINT8 BufChar; - FlPrintFile (FileId, "Output: [%3.3Xh %4.4d %3d] ", + FlPrintFile (FileId, "Output: [%3.3Xh %4.4d %3.3Xh] ", Offset, Offset, Length); i = 0; diff --git a/sys/contrib/dev/acpica/compiler/dtparser.l b/sys/contrib/dev/acpica/compiler/dtparser.l index 6ecfed267c76..90fc39d8c66a 100644 --- a/sys/contrib/dev/acpica/compiler/dtparser.l +++ b/sys/contrib/dev/acpica/compiler/dtparser.l @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dtparser.y b/sys/contrib/dev/acpica/compiler/dtparser.y index ccf9eb5d3c00..d6d584b2c6e9 100644 --- a/sys/contrib/dev/acpica/compiler/dtparser.y +++ b/sys/contrib/dev/acpica/compiler/dtparser.y @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dtsubtable.c b/sys/contrib/dev/acpica/compiler/dtsubtable.c index 2865e0b39036..0c660b7ab8bb 100644 --- a/sys/contrib/dev/acpica/compiler/dtsubtable.c +++ b/sys/contrib/dev/acpica/compiler/dtsubtable.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dttable.c b/sys/contrib/dev/acpica/compiler/dttable.c index 86156ba25042..effcf6d65e1c 100644 --- a/sys/contrib/dev/acpica/compiler/dttable.c +++ b/sys/contrib/dev/acpica/compiler/dttable.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/dttable1.c b/sys/contrib/dev/acpica/compiler/dttable1.c index 0fab7d880724..391bff98210d 100644 --- a/sys/contrib/dev/acpica/compiler/dttable1.c +++ b/sys/contrib/dev/acpica/compiler/dttable1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -206,7 +206,14 @@ DtCompileAest ( UINT32 i; UINT32 Offset; DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_AEST_NODE_INTERFACE_HEADER *AestNodeHeader; + UINT8 Revision; + ACPI_TABLE_HEADER *Header; + ParentTable = DtPeekSubtable (); + + Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); + Revision = Header->Revision; while (*PFieldList) { @@ -257,8 +264,21 @@ DtCompileAest ( break; case ACPI_AEST_VENDOR_ERROR_NODE: + switch (Revision) + { + case 1: + InfoTable = AcpiDmTableInfoAestVendorError; + break; - InfoTable = AcpiDmTableInfoAestVendorError; + case 2: + InfoTable = AcpiDmTableInfoAestVendorV2Error; + break; + + default: + AcpiOsPrintf ("Unknown AEST Vendor Error Revision: %X\n", + Revision); + return (AE_ERROR); + } break; case ACPI_AEST_GIC_ERROR_NODE: @@ -266,6 +286,16 @@ DtCompileAest ( InfoTable = AcpiDmTableInfoAestGicError; break; + case ACPI_AEST_PCIE_ERROR_NODE: + + InfoTable = AcpiDmTableInfoAestPCIeError; + break; + + case ACPI_AEST_PROXY_ERROR_NODE: + + InfoTable = AcpiDmTableInfoAestProxyError; + break; + /* Error case below */ default: AcpiOsPrintf ("Unknown AEST Subtable Type: %X\n", @@ -341,9 +371,57 @@ DtCompileAest ( } /* Compile the (required) node interface structure */ + if (Revision == 1) + { + InfoTable = AcpiDmTableInfoAestXface; + } + else if (Revision == 2) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXfaceHeader, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } - Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXface, - &Subtable); + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + Offset += Subtable->Length; + + AestNodeHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER, + Subtable->Buffer); + + switch (AestNodeHeader->GroupFormat) + { + case ACPI_AEST_NODE_GROUP_FORMAT_4K: + + InfoTable = AcpiDmTableInfoAestXface4k; + break; + + case ACPI_AEST_NODE_GROUP_FORMAT_16K: + + InfoTable = AcpiDmTableInfoAestXface16k; + break; + + case ACPI_AEST_NODE_GROUP_FORMAT_64K: + + InfoTable = AcpiDmTableInfoAestXface64k; + break; + + /* Error case below */ + default: + AcpiOsPrintf ("Unknown AEST Interface Group Format: %X\n", + AestNodeHeader->GroupFormat); + return (AE_ERROR); + } + } + else + { + AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision); + } + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); @@ -367,8 +445,22 @@ DtCompileAest ( for (i = 0; i < ErrorNodeHeader->NodeInterruptCount; i++) { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXrupt, - &Subtable); + switch (Revision) { + case 1: + + InfoTable = AcpiDmTableInfoAestXrupt; + break; + + case 2: + + InfoTable = AcpiDmTableInfoAestXruptV2; + break; + + default: + AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision); + return (AE_ERROR); + } + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); @@ -654,6 +746,218 @@ DtCompileAsf ( return (AE_OK); } +/****************************************************************************** + * + * FUNCTION: DtCompileAspt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile ASPT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileAspt ( + void **List) +{ + ACPI_ASPT_HEADER *AsptTable; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_STATUS Status; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoAspt, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + while (*PFieldList) + { + SubtableStart = *PFieldList; + Status = DtCompileTable (PFieldList, AcpiDmTableInfoAsptHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + AsptTable = ACPI_CAST_PTR (ACPI_ASPT_HEADER, Subtable->Buffer); + + switch (AsptTable->Type) /* Mask off top bit */ + { + case ACPI_ASPT_TYPE_GLOBAL_REGS: + + InfoTable = AcpiDmTableInfoAspt0; + break; + + case ACPI_ASPT_TYPE_SEV_MBOX_REGS: + + InfoTable = AcpiDmTableInfoAspt1; + break; + + case ACPI_ASPT_TYPE_ACPI_MBOX_REGS: + + InfoTable = AcpiDmTableInfoAspt2; + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASPT"); + return (AE_ERROR); + } + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPopSubtable (); + } + + return (AE_OK); +} + + +/****************************************************************************** + * + * FUNCTION: DtCompileCdat + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile CDAT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileCdat ( + void **List) +{ + ACPI_STATUS Status = AE_OK; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_CDAT_HEADER *CdatHeader; + ACPI_DMTABLE_INFO *InfoTable = NULL; + DT_FIELD *SubtableStart; + + + /* Walk the parse tree. + * + * Note: Main table consists of only the CDAT table header + * (This is not the standard ACPI table header, however)-- + * Followed by some number of subtables. + */ + while (*PFieldList) + { + SubtableStart = *PFieldList; + + /* Compile the expected CDAT Subtable header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCdatHeader, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + CdatHeader = ACPI_CAST_PTR (ACPI_CDAT_HEADER, Subtable->Buffer); + + /* Decode the subtable by type */ + + switch (CdatHeader->Type) + { + case ACPI_CDAT_TYPE_DSMAS: + InfoTable = AcpiDmTableInfoCdat0; + break; + + case ACPI_CDAT_TYPE_DSLBIS: + InfoTable = AcpiDmTableInfoCdat1; + break; + + case ACPI_CDAT_TYPE_DSMSCIS: + InfoTable = AcpiDmTableInfoCdat2; + break; + + case ACPI_CDAT_TYPE_DSIS: + InfoTable = AcpiDmTableInfoCdat3; + break; + + case ACPI_CDAT_TYPE_DSEMTS: + InfoTable = AcpiDmTableInfoCdat4; + break; + + case ACPI_CDAT_TYPE_SSLBIS: + InfoTable = AcpiDmTableInfoCdat5; + break; + + default: + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CDAT"); + } + + /* Compile the CDAT subtable */ + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + switch (CdatHeader->Type) + { + /* Multiple entries supported for this type */ + + case ACPI_CDAT_TYPE_SSLBIS: + + /* + * Check for multiple SSLBEs + */ + while (*PFieldList && !AcpiUtStricmp ((*PFieldList)->Name, "Port X ID")) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCdatEntries, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + break; + + default: + break; + } + + /* Pop off the CDAT Subtable header subtree */ + + DtPopSubtable (); + } + + return (AE_OK); +} + /****************************************************************************** * @@ -727,7 +1031,7 @@ DtCompileCedt ( /* Look in buffer for the number of targets */ offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CFMWS, InterleaveWays); dump = (unsigned char *) Subtable->Buffer - 4; /* place at beginning of cedt1 */ - max = 0x01 << dump[offset]; /* 2^max, so 0=1, 1=2, 2=4, 3=8. 8 is MAX */ + max = 0x01 << dump[offset]; /* 2^max, so 0=1, 1=2, 2=4, 3=8. 8 is MAX */ if (max > 8) max=1; /* Error in encoding Interleaving Ways. */ if (max == 1) /* if only one target, then break here. */ break; /* break if only one target. */ @@ -762,6 +1066,53 @@ DtCompileCedt ( ParentTable = DtPeekSubtable (); break; } + case ACPI_CEDT_TYPE_CXIMS: { + unsigned char *dump; + unsigned int idx, offset, max = 0; + + /* Compile table with first "Xor map" */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* Look in buffer for the number of Xor maps */ + offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CXIMS, NrXormaps); + dump = (unsigned char *) Subtable->Buffer - 4; /* place at beginning of cedt2 */ + max = dump[offset]; + + /* We need to add more XOR maps, so write the current Subtable. */ + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); /* Insert AcpiDmTableInfoCedt2 table so we can put in */ + DtPushSubtable (Subtable); + + /* Now, find out all Xor maps beyond the first. */ + + for (idx = 1; idx < max; idx++) { + ParentTable = DtPeekSubtable (); + + if (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2_te, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (Subtable) + { + DtInsertSubtable (ParentTable, Subtable); /* got an Xor map, so insert table. */ + InsertFlag = 0; + } + } + } + + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + break; + } default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT"); @@ -1156,6 +1507,11 @@ DtCompileDmar ( InfoTable = AcpiDmTableInfoDmar5; break; + case ACPI_DMAR_TYPE_SIDP: + + InfoTable = AcpiDmTableInfoDmar6; + break; + default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR"); @@ -1397,6 +1753,265 @@ DtCompileEinj ( /****************************************************************************** * + * FUNCTION: DtCompileErdt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile ERST. Complex table with subtables and subsubtables. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileErdt ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable, *RmddSubtable = NULL, *Subsubtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + ACPI_SUBTBL_HDR_16 *ErdtHeader; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_ERDT_MMRC *Mmrc; + ACPI_ERDT_IBRD *Ibrd; + UINT32 NumEntries; + BOOLEAN SeenRmdd = FALSE; + BOOLEAN SeenSubtable = FALSE; + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoErdt, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + while (*PFieldList) + { + SubtableStart = *PFieldList; + Status = DtCompileTable (PFieldList, AcpiDmTableInfoErdtHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ErdtHeader = ACPI_CAST_PTR (ACPI_SUBTBL_HDR_16, Subtable->Buffer); + + /* RMDD tables at top level. All others are subtables of preceeding RMDD */ + if (ErdtHeader->Type == ACPI_ERDT_TYPE_RMDD) + { + if (SeenRmdd && SeenSubtable) + DtPopSubtable (); + SeenRmdd = TRUE; + SeenSubtable = FALSE; + RmddSubtable = Subtable; + } + else + { + if (!SeenSubtable) + { + DtPushSubtable (RmddSubtable); + SeenSubtable = TRUE; + } + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + switch (ErdtHeader->Type) + { + case ACPI_ERDT_TYPE_RMDD: + InfoTable = AcpiDmTableInfoErdtRmdd; + break; + + case ACPI_ERDT_TYPE_CACD: + InfoTable = AcpiDmTableInfoErdtCacd; + break; + + case ACPI_ERDT_TYPE_DACD: + InfoTable = AcpiDmTableInfoErdtDacd; + break; + + case ACPI_ERDT_TYPE_CMRC: + InfoTable = AcpiDmTableInfoErdtCmrc; + break; + + case ACPI_ERDT_TYPE_MMRC: + InfoTable = AcpiDmTableInfoErdtMmrc; + break; + + case ACPI_ERDT_TYPE_MARC: + InfoTable = AcpiDmTableInfoErdtMarc; + break; + + case ACPI_ERDT_TYPE_CARC: + InfoTable = AcpiDmTableInfoErdtCarc; + break; + + case ACPI_ERDT_TYPE_CMRD: + InfoTable = AcpiDmTableInfoErdtCmrd; + break; + + case ACPI_ERDT_TYPE_IBRD: + InfoTable = AcpiDmTableInfoErdtIbrd; + break; + + case ACPI_ERDT_TYPE_IBAD: + InfoTable = AcpiDmTableInfoErdtIbad; + break; + + case ACPI_ERDT_TYPE_CARD: + InfoTable = AcpiDmTableInfoErdtCard; + break; + + default: + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ERDT"); + return (AE_ERROR); + } + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Some subtable types end with flex arrays */ + + switch (ErdtHeader->Type) + { + case ACPI_ERDT_TYPE_CACD: + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoErdtCacdX2apic, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + break; + + case ACPI_ERDT_TYPE_DACD: + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoErdtDacdScope, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + + DtPushSubtable (Subtable); + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoErdtDacdPath, &Subsubtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subsubtable) + { + break; + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subsubtable); + } + DtPopSubtable (); + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + break; + + case ACPI_ERDT_TYPE_MMRC: + Mmrc = ACPI_SUB_PTR (ACPI_ERDT_MMRC, Subtable->Buffer, + sizeof(ACPI_SUBTBL_HDR_16)); + NumEntries = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoErdtMmrcCorrFactor, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + NumEntries++; + } + Mmrc->CorrFactorListLen = NumEntries; + break; + + case ACPI_ERDT_TYPE_IBRD: + Ibrd = ACPI_SUB_PTR (ACPI_ERDT_IBRD, Subtable->Buffer, + sizeof(ACPI_SUBTBL_HDR_16)); + NumEntries = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoErdtIbrdCorrFactor, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + NumEntries++; + } + Ibrd->CorrFactorListLen = NumEntries; + break; + + default: + /* Already checked for valid subtable type above */ + + break; + } + DtPopSubtable (); + } + + if (SeenSubtable) + { + DtPopSubtable (); + } + + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileErst * * PARAMETERS: List - Current field list pointer @@ -1882,7 +2497,7 @@ DtCompileHmat ( DtInsertSubtable (ParentTable, Subtable); HmatStruct->Length += Subtable->Length; - /* Compile HMAT structure additionals */ + /* Compile HMAT structure additional */ switch (HmatStruct->Type) { @@ -2592,7 +3207,6 @@ DtCompileIvrs ( DtInsertSubtable (MainSubtable, Subtable); DtPushSubtable (Subtable); - ParentTable = MainSubtable; break; case ACPI_IVRS_TYPE_HID: @@ -2729,3 +3343,254 @@ DtCompileIvrs ( return (AE_OK); } + + +/****************************************************************************** + * + * FUNCTION: DtCompileRimt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile RIMT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileRimt ( + void **List) +{ + ACPI_RIMT_PLATFORM_DEVICE *PlatDevNode; + ACPI_RIMT_PCIE_RC *PcieRcNode; + ACPI_TABLE_RIMT *Rimt; + ACPI_RIMT_IOMMU *IommuNode; + ACPI_RIMT_NODE *RimtNode; + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + UINT32 NodeNumber; + UINT32 NodeLength; + UINT16 IdMappingNumber; + UINT32 i; + + + ParentTable = DtPeekSubtable (); + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimt, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + + /* + * Using ACPI_SUB_PTR, We needn't define a separate structure. Care + * should be taken to avoid accessing ACPI_TABLE_HEADER fields. + */ + Rimt = ACPI_SUB_PTR (ACPI_TABLE_RIMT, Subtable->Buffer, + sizeof (ACPI_TABLE_HEADER)); + + NodeNumber = 0; + while (*PFieldList) + { + SubtableStart = *PFieldList; + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtNodeHdr, &Subtable); + + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + RimtNode = ACPI_CAST_PTR (ACPI_RIMT_NODE, Subtable->Buffer); + NodeLength = ACPI_OFFSET (ACPI_RIMT_NODE, NodeData); + + DtPushSubtable (Subtable); + ParentTable = DtPeekSubtable (); + + switch (RimtNode->Type) + { + case ACPI_RIMT_NODE_TYPE_IOMMU: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtIommu, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + IommuNode = ACPI_CAST_PTR (ACPI_RIMT_IOMMU, Subtable->Buffer); + DtInsertSubtable (ParentTable, Subtable); + NodeLength += Subtable->Length; + + for (i = 0; i < IommuNode->NumInterruptWires; i++) + { + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoRimtIommuWire, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + + DtInsertSubtable (ParentTable, Subtable); + NodeLength += Subtable->Length; + } + } + + break; + + case ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPcieRc, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + PcieRcNode = ACPI_CAST_PTR (ACPI_RIMT_PCIE_RC, Subtable->Buffer); + NodeLength += Subtable->Length; + + /* Compile Array of ID mappings */ + + PcieRcNode->IdMappingOffset = (UINT16) NodeLength; + IdMappingNumber = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoRimtIdMapping, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + if (!Subtable) + { + break; + } + + DtInsertSubtable (ParentTable, Subtable); + NodeLength += sizeof (ACPI_RIMT_ID_MAPPING); + IdMappingNumber++; + } + + PcieRcNode->NumIdMappings = IdMappingNumber; + if (!IdMappingNumber) + { + PcieRcNode->IdMappingOffset = 0; + } + + break; + + case ACPI_RIMT_NODE_TYPE_PLAT_DEVICE: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPlatDev, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + PlatDevNode = ACPI_CAST_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable->Buffer); + NodeLength += Subtable->Length; + + /* + * Padding - Variable-length data + * Optionally allows the offset of the ID mappings to be used + * for filling this field. + */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPlatDevPad, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + if (Subtable) + { + DtInsertSubtable (ParentTable, Subtable); + NodeLength += Subtable->Length; + } + else + { + if (NodeLength > PlatDevNode->IdMappingOffset) + { + return (AE_BAD_DATA); + } + + if (NodeLength < PlatDevNode->IdMappingOffset) + { + Status = DtCompilePadding ( + PlatDevNode->IdMappingOffset - (UINT16) NodeLength, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + NodeLength = PlatDevNode->IdMappingOffset; + } + } + + /* Compile Array of ID mappings */ + + PlatDevNode->IdMappingOffset = (UINT16) NodeLength; + IdMappingNumber = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoRimtIdMapping, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + if (!Subtable) + { + break; + } + + DtInsertSubtable (ParentTable, Subtable); + NodeLength += sizeof (ACPI_RIMT_ID_MAPPING); + IdMappingNumber++; + } + + PlatDevNode->NumIdMappings = IdMappingNumber; + if (!IdMappingNumber) + { + PlatDevNode->IdMappingOffset = 0; + } + + break; + + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "RIMT"); + return (AE_ERROR); + } + + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + NodeNumber++; + } + + Rimt->NumNodes = NodeNumber; + return (AE_OK); +} diff --git a/sys/contrib/dev/acpica/compiler/dttable2.c b/sys/contrib/dev/acpica/compiler/dttable2.c index 73c369c12948..754880346299 100644 --- a/sys/contrib/dev/acpica/compiler/dttable2.c +++ b/sys/contrib/dev/acpica/compiler/dttable2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -254,8 +254,10 @@ DtCompileMadt ( DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; + ACPI_TABLE_HEADER *Table; ACPI_SUBTABLE_HEADER *MadtHeader; ACPI_DMTABLE_INFO *InfoTable; + UINT8 Revision; Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadt, @@ -268,6 +270,9 @@ DtCompileMadt ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); + Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); + Revision = Table->Revision; + while (*PFieldList) { SubtableStart = *PFieldList; @@ -343,7 +348,12 @@ DtCompileMadt ( case ACPI_MADT_TYPE_GENERIC_INTERRUPT: - InfoTable = AcpiDmTableInfoMadt11; + if (Revision > 6) + InfoTable = AcpiDmTableInfoMadt11b; + else if (Revision == 6) + InfoTable = AcpiDmTableInfoMadt11a; + else + InfoTable = AcpiDmTableInfoMadt11; break; case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR: @@ -358,12 +368,15 @@ DtCompileMadt ( case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR: - InfoTable = AcpiDmTableInfoMadt14; + InfoTable = Revision > 6 ? AcpiDmTableInfoMadt14a + : AcpiDmTableInfoMadt14; break; case ACPI_MADT_TYPE_GENERIC_TRANSLATOR: - InfoTable = AcpiDmTableInfoMadt15; + InfoTable = Revision > 6 ? AcpiDmTableInfoMadt15a + : AcpiDmTableInfoMadt15; + break; case ACPI_MADT_TYPE_MULTIPROC_WAKEUP: @@ -371,11 +384,66 @@ DtCompileMadt ( InfoTable = AcpiDmTableInfoMadt16; break; + case ACPI_MADT_TYPE_CORE_PIC: + + InfoTable = AcpiDmTableInfoMadt17; + break; + + case ACPI_MADT_TYPE_LIO_PIC: + + InfoTable = AcpiDmTableInfoMadt18; + break; + + case ACPI_MADT_TYPE_HT_PIC: + + InfoTable = AcpiDmTableInfoMadt19; + break; + + case ACPI_MADT_TYPE_EIO_PIC: + + InfoTable = AcpiDmTableInfoMadt20; + break; + + case ACPI_MADT_TYPE_MSI_PIC: + + InfoTable = AcpiDmTableInfoMadt21; + break; + + case ACPI_MADT_TYPE_BIO_PIC: + + InfoTable = AcpiDmTableInfoMadt22; + break; + + case ACPI_MADT_TYPE_LPC_PIC: + + InfoTable = AcpiDmTableInfoMadt23; + break; + + case ACPI_MADT_TYPE_RINTC: + + InfoTable = AcpiDmTableInfoMadt24; + break; + + case ACPI_MADT_TYPE_IMSIC: + + InfoTable = AcpiDmTableInfoMadt25; + break; + + case ACPI_MADT_TYPE_APLIC: + + InfoTable = AcpiDmTableInfoMadt26; + break; + + case ACPI_MADT_TYPE_PLIC: + + InfoTable = AcpiDmTableInfoMadt27; + break; + default: if (MadtHeader->Type >= ACPI_MADT_TYPE_OEM_RESERVED) { - InfoTable = AcpiDmTableInfoMadt17; + InfoTable = AcpiDmTableInfoMadt128; } else { @@ -425,6 +493,163 @@ DtCompileMcfg ( return (Status); } +/****************************************************************************** + * + * FUNCTION: DtCompileMpam + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile MPAM. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileMpam ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *ParentTable; + DT_SUBTABLE *Subtable; + DT_FIELD *SubtableStart; + DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_MPAM_MSC_NODE *MpamMscNode; + ACPI_MPAM_RESOURCE_NODE *MpamResourceNode; + UINT32 FuncDepsCount; + UINT32 RisLength; + ACPI_DMTABLE_INFO *InfoTable; + + ParentTable = DtPeekSubtable (); + + while (*PFieldList) + { + SubtableStart = *PFieldList; + + /* Main MSC Node table */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + MpamMscNode = ACPI_CAST_PTR (ACPI_MPAM_MSC_NODE, Subtable->Buffer); + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + ParentTable = DtPeekSubtable (); + + /* + * RIS(es) per MSC node have variable lengths depending on how many RISes there and + * any how many functional dependencies per RIS. Calculate it in order + * to properly set the overall MSC length. + */ + RisLength = 0; + + /* Iterate over RIS subtables per MSC node */ + for (UINT32 ris = 0; ris < MpamMscNode->NumResourceNodes; ris++) + { + /* Compile RIS subtable */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam1, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + MpamResourceNode = ACPI_CAST_PTR (ACPI_MPAM_RESOURCE_NODE, Subtable->Buffer); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + ParentTable = DtPeekSubtable (); + + switch (MpamResourceNode->LocatorType) + { + case ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE: + InfoTable = AcpiDmTableInfoMpam1A; + break; + case ACPI_MPAM_LOCATION_TYPE_MEMORY: + InfoTable = AcpiDmTableInfoMpam1B; + break; + case ACPI_MPAM_LOCATION_TYPE_SMMU: + InfoTable = AcpiDmTableInfoMpam1C; + break; + case ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE: + InfoTable = AcpiDmTableInfoMpam1D; + break; + case ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE: + InfoTable = AcpiDmTableInfoMpam1E; + break; + case ACPI_MPAM_LOCATION_TYPE_INTERCONNECT: + InfoTable = AcpiDmTableInfoMpam1F; + break; + case ACPI_MPAM_LOCATION_TYPE_UNKNOWN: + InfoTable = AcpiDmTableInfoMpam1G; + default: + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "Resource Locator Type"); + return (AE_ERROR); + } + + /* Compile Resource Locator Table */ + Status = DtCompileTable (PFieldList, InfoTable, + &Subtable); + + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + + /* Compile the number of functional dependencies per RIS */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam1Deps, + &Subtable); + + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + FuncDepsCount = *ACPI_CAST_PTR (UINT32, Subtable->Buffer); + + RisLength += sizeof(ACPI_MPAM_RESOURCE_NODE) + + FuncDepsCount * sizeof(ACPI_MPAM_FUNC_DEPS); + + /* Iterate over functional dependencies per RIS */ + for (UINT32 funcDep = 0; funcDep < FuncDepsCount; funcDep++) + { + /* Compiler functional dependencies table */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam2, + &Subtable); + + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + } + + DtPopSubtable (); + } + + /* Check if the length of the MSC is correct and override with the correct length */ + if (MpamMscNode->Length != sizeof(ACPI_MPAM_MSC_NODE) + RisLength) + { + MpamMscNode->Length = (UINT16) (sizeof(ACPI_MPAM_MSC_NODE) + RisLength); + DbgPrint (ASL_DEBUG_OUTPUT, "Overriding MSC->Length: %X\n", MpamMscNode->Length); + } + + DtPopSubtable (); + } + + return (AE_OK); +} + /****************************************************************************** * @@ -565,6 +790,57 @@ DtCompileMpst ( /****************************************************************************** * + * FUNCTION: DtCompileMrrm + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile MRRM. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileMrrm ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + + /* Main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMrrm, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Subtables (all are same type) */ + + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMrrm0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + } + + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileMsct * * PARAMETERS: List - Current field list pointer @@ -792,394 +1068,6 @@ DtCompileNfit ( /****************************************************************************** * - * FUNCTION: DtCompileNhlt - * - * PARAMETERS: List - Current field list pointer - * - * RETURN: Status - * - * DESCRIPTION: Compile NHLT. - * - *****************************************************************************/ - -ACPI_STATUS -DtCompileNhlt ( - void **List) -{ - ACPI_STATUS Status; - UINT32 EndpointCount; - UINT32 MicrophoneCount; - UINT32 FormatsCount; - DT_SUBTABLE *Subtable; - DT_SUBTABLE *ParentTable; - DT_FIELD **PFieldList = (DT_FIELD **) List; - UINT32 CapabilitiesSize; - UINT8 ArrayType; - UINT8 ConfigType; - UINT8 DeviceInfoCount; - UINT32 i; - UINT32 j; - ACPI_TABLE_NHLT_ENDPOINT_COUNT *MainTable; - ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A *DevSpecific; - ACPI_NHLT_VENDOR_MIC_COUNT *MicCount; - ACPI_NHLT_FORMATS_CONFIG *FormatsConfig; - ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D *ConfigSpecific; - ACPI_NHLT_DEVICE_INFO_COUNT *DeviceInfo; - - - /* Main table */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Get the Endpoint Descriptor count */ - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); - - MainTable = ACPI_CAST_PTR (ACPI_TABLE_NHLT_ENDPOINT_COUNT, Subtable->Buffer); - EndpointCount = MainTable->EndpointCount; - - /* Subtables */ - - while (*PFieldList) - { - /* Variable number of Endpoint descriptors */ - - for (i = 0; i < EndpointCount; i++) - { - /* Do the Endpoint Descriptor */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt0, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); - - /* Do the Device Specific table */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5b, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); - - DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable->Buffer); - CapabilitiesSize = DevSpecific->CapabilitiesSize; - - ArrayType = 0; - ConfigType = 0; - - switch (CapabilitiesSize) - { - case 0: - break; - - case 1: - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5c, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - break; - - case 2: - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - break; - - case 3: - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); - ArrayType = ConfigSpecific->ArrayType; - ConfigType = ConfigSpecific->ConfigType; - break; - - case 7: - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6b, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); - ArrayType = ConfigSpecific->ArrayType; - ConfigType = ConfigSpecific->ConfigType; - break; - - default: - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); - ArrayType = ConfigSpecific->ArrayType; - ConfigType = ConfigSpecific->ConfigType; - break; - - } /* switch (CapabilitiesSize) */ - - if (CapabilitiesSize >= 3) - { - /* Check for a vendor-defined mic array */ - - if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY) - { - if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED) - { - /* Get the microphone count */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - MicCount = ACPI_CAST_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Subtable->Buffer); - MicrophoneCount = MicCount->MicrophoneCount; - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - /* Variable number of microphones */ - - for (j = 0; j < MicrophoneCount; j++) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - } - - /* Do the MIC_SNR_SENSITIVITY_EXTENSION, if present */ - - if (ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt9, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - } - } - } - } - - /* Get the formats count */ - - DtPopSubtable (); - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt4, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - FormatsConfig = ACPI_CAST_PTR (ACPI_NHLT_FORMATS_CONFIG, Subtable->Buffer); - FormatsCount = FormatsConfig->FormatsCount; - - /* Variable number of wave_format_extensible structs */ - - for (j = 0; j < FormatsCount; j++) - { - /* Do the main wave_format_extensible structure */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); - - /* Do the capabilities list */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - DtPopSubtable (); - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - } /* for (j = 0; j < FormatsCount; j++) */ - - /* - * If we are not done with the current Endpoint yet, then there must be - * some non documeneted structure(s) yet to be processed. First, get - * the count of such structure(s). - */ - if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length"))) - { - /* Get the count of non documented structures */ - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - DeviceInfo = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_INFO_COUNT, Subtable->Buffer); - DeviceInfoCount = DeviceInfo->StructureCount; - - for (j = 0; j < DeviceInfoCount; j++) - { - /* - * Compile the following Device Info fields: - * 1) Device ID - * 2) Device Instance ID - * 3) Device Port ID - */ - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - } /* for (j = 0; j < LinuxSpecificCount; j++) */ - - - /* Undocumented data at the end of endpoint */ - if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length"))) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7b, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - } - } - - DtPopSubtable (); - - } /* for (i = 0; i < EndpointCount; i++) */ - - /* - * All Endpoint Descriptors are completed. - * Do the table terminator specific config (not in NHLT spec, optional) - */ - if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length"))) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5b, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - } - - return (AE_OK); - } - - return (AE_OK); -} - - -/****************************************************************************** - * * FUNCTION: DtCompilePcct * * PARAMETERS: List - Current field list pointer @@ -1369,19 +1257,30 @@ DtCompilePhat ( ACPI_PHAT_HEADER *PhatHeader; ACPI_DMTABLE_INFO *Info; ACPI_PHAT_VERSION_DATA *VersionData; + UINT32 DeviceDataLength; UINT32 RecordCount; + DT_FIELD *DataOffsetField; + DT_FIELD *DevicePathField; + UINT32 TableOffset = 0; + UINT32 DataOffsetValue; + UINT32 i; - /* The table consist of subtables */ + /* The table consists of subtables */ while (*PFieldList) { + /* Compile the common subtable header */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhatHdr, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } + TableOffset += Subtable->Length; + DbgPrint (ASL_DEBUG_OUTPUT, "0 Subtable->Length: %X\n", Subtable->Length); + ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); @@ -1392,12 +1291,66 @@ DtCompilePhat ( { case ACPI_PHAT_TYPE_FW_VERSION_DATA: + /* Compile the middle portion of the Firmware Version Data */ + Info = AcpiDmTableInfoPhat0; PhatHeader->Length = sizeof (ACPI_PHAT_VERSION_DATA); + DataOffsetField = NULL; break; case ACPI_PHAT_TYPE_FW_HEALTH_DATA: + DbgPrint (ASL_DEBUG_OUTPUT, "1 Offset: %X, Name: \"%s\" Length: %X\n", + (*PFieldList)->TableOffset, (*PFieldList)->Name, Subtable->Length); + + DataOffsetField = *PFieldList; + + /* Walk the field list to get to the "Device-specific data Offset" field */ + + TableOffset = sizeof (ACPI_PHAT_HEALTH_DATA); + for (i = 0; i < 3; i++) + { + DataOffsetField = DataOffsetField->Next; + DbgPrint (ASL_DEBUG_OUTPUT, "2 Offset: %X, Name: \"%s\" Length: %X Value: %s:\n", + TableOffset, DataOffsetField->Name, DataOffsetField->StringLength, DataOffsetField->Value); + } + + /* Convert DataOffsetField->Value (a char * string) to an integer value */ + + sscanf (DataOffsetField->Value, "%X", &DataOffsetValue); + + /* + * Get the next field (Device Path): + * DataOffsetField points to "Device-Specific Offset", next field is + * "Device Path". + */ + DevicePathField = DataOffsetField->Next; + + /* Compute the size of the input ASCII string as a unicode string (*2 + 2) */ + + DevicePathField->StringLength = (strlen ((const char *) DevicePathField->Value) * 2) + 2; + TableOffset += DevicePathField->StringLength; + + DbgPrint (ASL_DEBUG_OUTPUT, "3 Offset: %X, Length: %X devicepathLength: %X\n", + TableOffset, Subtable->Length, DevicePathField->StringLength); + + /* Set the DataOffsetField to the current TableOffset */ + /* Must set the DataOffsetField here (not later) */ + + if (DataOffsetValue != 0) + { + snprintf (DataOffsetField->Value, Subtable->Length, "%X", TableOffset); + } + + DbgPrint (ASL_DEBUG_OUTPUT, "4 Offset: %X, Length: %X\n", TableOffset, Subtable->Length); + + DbgPrint (ASL_DEBUG_OUTPUT, "5 TableOffset: %X, DataOffsetField->StringLength: " + "%X DevicePathField Length: %X DevicePathField->Value: %s, DataOffsetField->Value: %s DataOffsetField->ByteOffset %X\n", + TableOffset, DataOffsetField->StringLength, DevicePathField->StringLength, + DevicePathField->Value, DataOffsetField->Value, DataOffsetField->ByteOffset); + + /* Compile the middle portion of the Health Data Record */ + Info = AcpiDmTableInfoPhat1; PhatHeader->Length = sizeof (ACPI_PHAT_HEALTH_DATA); break; @@ -1406,16 +1359,19 @@ DtCompilePhat ( DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT"); return (AE_ERROR); - - break; } + /* Compile either the Version Data or the Health Data */ + Status = DtCompileTable (PFieldList, Info, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } + DbgPrint (ASL_DEBUG_OUTPUT, "6 Offset: %X, Name: \"%s\" SubtableLength: %X\n", + TableOffset /* - StartTableOffset*/, (*PFieldList)->Name, Subtable->Length); + ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); @@ -1427,6 +1383,8 @@ DtCompilePhat ( (Subtable->Buffer - sizeof (ACPI_PHAT_HEADER))); RecordCount = VersionData->ElementCount; + /* Compile all of the Version Elements */ + while (RecordCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat0a, @@ -1435,17 +1393,29 @@ DtCompilePhat ( { return (Status); } + ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); + TableOffset += Subtable->Length; RecordCount--; PhatHeader->Length += sizeof (ACPI_PHAT_VERSION_ELEMENT); } + + DtPopSubtable (); break; case ACPI_PHAT_TYPE_FW_HEALTH_DATA: - /* Compile device path */ + /* Compile the Device Path */ + + DeviceDataLength = Subtable->Length; + TableOffset += Subtable->Length; + + DbgPrint (ASL_DEBUG_OUTPUT, "7 Device Path Length: %X FieldName: \"%s\" FieldLength: " + "%s FieldValue: %s SubtableLength: %X TableOffset: %X\n", DeviceDataLength, + (*PFieldList)->Name, DataOffsetField->Value, (*PFieldList)->Value, + Subtable->Length, TableOffset); Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1a, &Subtable); if (ACPI_FAILURE (Status)) @@ -1455,20 +1425,58 @@ DtCompilePhat ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); + /* *PFieldList will be null if previous field was at the end-of-ParseTree (EOF) */ + + if (!*PFieldList) + { + DbgPrint (ASL_DEBUG_OUTPUT, "8 Exit on end-of-ParseTree\n"); + return (AE_OK); + } + + DbgPrint (ASL_DEBUG_OUTPUT, "9 Device Data Length: %X FieldName: \"%s" + " TableOffset: %X FieldLength: %X Field Value: %s SubtableLength: %X\n", + DeviceDataLength, (*PFieldList)->Name, TableOffset, + (*PFieldList)->StringLength, (*PFieldList)->Value, Subtable->Length); + PhatHeader->Length += (UINT16) Subtable->Length; - /* Compile vendor specific data */ + /* Convert DataOffsetField->Value (a hex char * string) to an integer value */ - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable); - if (ACPI_FAILURE (Status)) + sscanf (DataOffsetField->Value, "%X", &DataOffsetValue); + + DbgPrint (ASL_DEBUG_OUTPUT, "10 Device-Specific Offset: %X Table Offset: %X\n", + DataOffsetValue, TableOffset); + if (DataOffsetValue != 0) { - return (Status); + /* Compile Device-Specific Data - only if the Data Offset is non-zero */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DbgPrint (ASL_DEBUG_OUTPUT, "11 Subtable: %p Table Offset: %X\n", + Subtable, TableOffset); + if (Subtable) + { + DbgPrint (ASL_DEBUG_OUTPUT, "12 Device Specific Offset: " + "%X FieldName \"%s\" SubtableLength %X\n", + DeviceDataLength, DataOffsetField->Name, Subtable->Length); + + DeviceDataLength += Subtable->Length; + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + PhatHeader->Length += (UINT16) Subtable->Length; + } } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - PhatHeader->Length += (UINT16) Subtable->Length; + DtPopSubtable (); + DbgPrint (ASL_DEBUG_OUTPUT, "13 FieldName: \"%s\" FieldLength: %X Field Value: %s\n", + DataOffsetField->Name, DataOffsetField->StringLength, DataOffsetField->Value); break; default: @@ -1675,7 +1683,7 @@ DtCompilePptt ( DtInsertSubtable (ParentTable, Subtable); PpttHeader->Length += (UINT8)(Subtable->Length); - /* Compile PPTT subtable additionals */ + /* Compile PPTT subtable additional */ switch (PpttHeader->Type) { @@ -1798,6 +1806,65 @@ DtCompilePrmt ( /****************************************************************************** * + * FUNCTION: DtCompileRas2 + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile RAS2. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileRas2 ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_TABLE_RAS2 *Ras2Header; + UINT32 Count = 0; + + + /* Main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRas2, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + Ras2Header = ACPI_CAST_PTR (ACPI_TABLE_RAS2, ParentTable->Buffer); + + /* There is only one type of subtable at this time, no need to decode */ + + while (*PFieldList) + { + /* List of RAS2 PCC descriptors, each 8 bytes */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRas2PccDesc, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + Count++; + } + + Ras2Header->NumPccDescs = (UINT8) Count; + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileRgrt * * PARAMETERS: List - Current field list pointer @@ -1846,6 +1913,167 @@ DtCompileRgrt ( /****************************************************************************** * + * FUNCTION: DtCompileRhct + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile RHCT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileRhct ( + void **List) +{ + ACPI_STATUS Status; + ACPI_RHCT_NODE_HEADER *RhctHeader; + ACPI_RHCT_HART_INFO *RhctHartInfo; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + ACPI_DMTABLE_INFO *InfoTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + ACPI_TABLE_RHCT *Table; + BOOLEAN FirstNode = TRUE; + + + /* Compile the main table */ + + ParentTable = DtPeekSubtable (); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhct, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + Table = ACPI_CAST_PTR (ACPI_TABLE_RHCT, ParentTable->Buffer); + Table->NodeCount = 0; + Table->NodeOffset = sizeof (ACPI_TABLE_RHCT); + + while (*PFieldList) + { + SubtableStart = *PFieldList; + + /* Compile RHCT subtable header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhctNodeHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + RhctHeader = ACPI_CAST_PTR (ACPI_RHCT_NODE_HEADER, Subtable->Buffer); + + DtPushSubtable (Subtable); + ParentTable = DtPeekSubtable (); + Table->NodeCount++; + + switch (RhctHeader->Type) + { + case ACPI_RHCT_NODE_TYPE_ISA_STRING: + + InfoTable = AcpiDmTableInfoRhctIsa1; + break; + + case ACPI_RHCT_NODE_TYPE_HART_INFO: + + InfoTable = AcpiDmTableInfoRhctHartInfo1; + break; + + case ACPI_RHCT_NODE_TYPE_CMO: + + InfoTable = AcpiDmTableInfoRhctCmo1; + break; + + case ACPI_RHCT_NODE_TYPE_MMU: + + InfoTable = AcpiDmTableInfoRhctMmu1; + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "RHCT"); + return (AE_ERROR); + } + + /* Compile RHCT subtable body */ + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + if (FirstNode) + { + Table->NodeOffset = ACPI_PTR_DIFF(ParentTable->Buffer, Table); + FirstNode = FALSE; + } + + /* Compile RHCT subtable additionals */ + + switch (RhctHeader->Type) + { + case ACPI_RHCT_NODE_TYPE_ISA_STRING: + + /* + * Padding - Variable-length data + * Optionally allows the padding of the ISA string to be used + * for filling this field. + */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhctIsaPad, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (Subtable) + { + DtInsertSubtable (ParentTable, Subtable); + } + break; + + case ACPI_RHCT_NODE_TYPE_HART_INFO: + + RhctHartInfo = ACPI_CAST_PTR (ACPI_RHCT_HART_INFO, + Subtable->Buffer); + RhctHartInfo->NumOffsets = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, + AcpiDmTableInfoRhctHartInfo2, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + if (!Subtable) + { + break; + } + DtInsertSubtable (ParentTable, Subtable); + RhctHartInfo->NumOffsets++; + } + break; + + default: + + break; + } + + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + } + + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileRsdt * * PARAMETERS: List - Current field list pointer @@ -2464,6 +2692,11 @@ DtCompileSrat ( InfoTable = AcpiDmTableInfoSrat6; break; + case ACPI_SRAT_TYPE_RINTC_AFFINITY: + + InfoTable = AcpiDmTableInfoSrat7; + break; + default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT"); diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.c b/sys/contrib/dev/acpica/compiler/dttemplate.c index db90bc654189..d7140712d4e6 100644 --- a/sys/contrib/dev/acpica/compiler/dttemplate.c +++ b/sys/contrib/dev/acpica/compiler/dttemplate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -255,7 +255,7 @@ DtCreateTemplates ( if (AcpiGbl_Optind < 3) { - fprintf (stderr, "Creating default template: [DSDT]\n"); + fprintf (stdout, "Creating default template: [DSDT]\n"); Status = DtCreateOneTemplateFile (ACPI_SIG_DSDT, 0); goto Exit; } @@ -411,7 +411,7 @@ DtCreateAllTemplates ( ACPI_STATUS Status; - fprintf (stderr, "Creating all supported Template files\n"); + fprintf (stdout, "Creating all supported Template files\n"); /* Walk entire ACPI table data structure */ @@ -421,8 +421,13 @@ DtCreateAllTemplates ( if (TableData->Template) { - Status = DtCreateOneTemplate (TableData->Signature, - 0, TableData); + if (ACPI_COMPARE_NAMESEG (TableData->Signature, ACPI_SIG_CDAT)) + /* Special handling of CDAT */ + Status = DtCreateOneTemplate (TableData->Signature, + 0, NULL); + else + Status = DtCreateOneTemplate (TableData->Signature, + 0, TableData); if (ACPI_FAILURE (Status)) { return (Status); @@ -563,7 +568,7 @@ DtCreateOneTemplate ( } else { - /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP */ + /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP, CDAT */ AcpiOsPrintf (" (AML byte code table)\n"); AcpiOsPrintf (" */\n"); @@ -621,6 +626,11 @@ DtCreateOneTemplate ( AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateRsdp)); } + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_CDAT)) + { + AcpiDmDumpCdat (ACPI_CAST_PTR (ACPI_TABLE_HEADER, + TemplateCdat)); + } else { fprintf (stderr, @@ -632,14 +642,14 @@ DtCreateOneTemplate ( if (TableCount == 0) { - fprintf (stderr, + fprintf (stdout, "Created ACPI table template for [%4.4s], " "written to \"%s\"\n", Signature, DisasmFilename); } else { - fprintf (stderr, + fprintf (stdout, "Created ACPI table templates for [%4.4s] " "and %u [SSDT] in same file, written to \"%s\"\n", Signature, TableCount, DisasmFilename); diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.h b/sys/contrib/dev/acpica/compiler/dttemplate.h index ad5af70748dc..51a34be5c36b 100644 --- a/sys/contrib/dev/acpica/compiler/dttemplate.h +++ b/sys/contrib/dev/acpica/compiler/dttemplate.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -157,13 +157,13 @@ const unsigned char TemplateAest[] = { - 0x41,0x45,0x53,0x54,0xCC,0x02,0x00,0x00, /* 00000000 "AEST...." */ - 0x01,0x2A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".*INTEL " */ + 0x41,0x45,0x53,0x54,0x90,0x03,0x00,0x00, /* 00000000 "AEST...." */ + 0x02,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x04,0x06,0x21,0x20,0x00,0x80,0x00,0x00, /* 00000020 "..! ...." */ + 0x28,0x06,0x23,0x20,0x00,0xA0,0x00,0x00, /* 00000020 "(.# ...." */ 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 00000028 ",...D..." */ - 0x74,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "t......." */ + 0x94,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */ 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000038 "....gE#." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ @@ -177,76 +177,100 @@ const unsigned char TemplateAest[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000090 "........" */ 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000098 ".......x" */ - 0x56,0x00,0x00,0x00,0x00,0x74,0x00,0x00, /* 000000A0 "V....t.." */ - 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000000A8 ",...D..." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000B8 "....gE#." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ - 0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00, /* 000000D0 "........" */ - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000D8 "....gE#." */ - 0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00, /* 000000E0 "gggg...." */ - 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000E8 "........" */ - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000F0 "....gE#." */ - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000F8 "........" */ - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000110 "........" */ - 0x01,0x60,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000118 ".`..,..." */ - 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "0......." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000a0 "....gE#." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000a8 "....gE#." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000b0 "....gE#." */ + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 000000b8 ".......x" */ + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00, /* 000000c0 "........" */ + 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000000c8 ",...D..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d0 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000d8 "....gE#." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000e0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000e8 "........" */ + 0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00, /* 000000f0 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000f8 "....gE#." */ + 0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00, /* 00000100 "gggg...." */ + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000108 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000110 "....gE#." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000118 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000138 "........" */ - 0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00, /* 00000140 "gE#....." */ - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000148 "........" */ + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000130 "........" */ + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000138 ".......x" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000140 "....gE#." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000148 "....gE#." */ 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000150 "....gE#." */ - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000158 "........" */ - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ + 0x01,0x80,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000158 "....,..." */ + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "0......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000168 "........" */ - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000170 "........" */ - 0x02,0x64,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000178 ".d..,..." */ - 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "4......." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000188 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000190 "........" */ - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000198 "........" */ - 0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55, /* 000001A0 "gE#.UUUU" */ - 0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00, /* 000001A8 "ffff...." */ - 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000001B0 "........" */ - 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 000001B8 "gE#....." */ - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001C0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */ - 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000001D0 "........" */ - 0x00,0x00,0x00,0x00,0x03,0x74,0x00,0x00, /* 000001D8 ".....t.." */ - 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000001E0 ",...D..." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000200 "....gE#." */ - 0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, /* 00000208 "3333DDDD" */ - 0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89, /* 00000210 ".#4EVgx." */ - 0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xFF,0x55, /* 00000218 ".......U" */ - 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000220 "........" */ - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000228 "....gE#." */ - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000230 "........" */ - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000238 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000240 "........" */ - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000248 "........" */ - 0x04,0x7C,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000250 ".|..,..." */ - 0x34,0x00,0x00,0x00,0x64,0x00,0x00,0x00, /* 00000258 "4...d..." */ - 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000260 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000170 "........" */ + 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000178 "........" */ + 0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00, /* 00000180 "gE#....." */ + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000188 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000190 "....gE#." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000198 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001a0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001a8 "........" */ + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 000001b0 "........" */ + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 000001b8 ".......x" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000001c0 "....gE#." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000001c8 "....gE#." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001d0 "........" */ + 0x02,0x84,0x00,0x00,0x2C,0x00,0x00,0x00, /* 000001d8 "....,..." */ + 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001e0 "4......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001e8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001f0 "........" */ + 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000001f8 "........" */ + 0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55, /* 00000200 "gE#.UUUU" */ + 0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00, /* 00000208 "ffff...." */ + 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000210 "........" */ + 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 00000218 "gE#....." */ + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000220 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ + 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 00000230 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000238 "........" */ + 0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89, /* 00000240 "...x...." */ + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 00000248 "gE#....." */ + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 00000250 "gE#....." */ + 0x67,0x45,0x23,0x01,0x03,0x98,0x00,0x00, /* 00000258 "gE#....." */ + 0x2C,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000260 ",...H..." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000268 "........" */ - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000270 "........" */ - 0x67,0x45,0x23,0x01,0x03,0x00,0x00,0x00, /* 00000278 "gE#....." */ - 0x88,0x88,0x77,0x77,0x00,0x00,0x00,0x00, /* 00000280 "..ww...." */ - 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000288 "........" */ - 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 00000290 "gE#....." */ - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000298 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002A0 "........" */ - 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000002A8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002B0 "........" */ - 0xBB,0xBB,0xAA,0xAA,0xCC,0x00,0x00,0x00, /* 000002B8 "........" */ - 0x01,0x00,0x00,0x01,0xEF,0xCD,0xAB,0x78, /* 000002C0 ".......x" */ - 0x56,0x00,0x00,0x00 /* 000002C8 "V..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000270 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000278 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000280 "....gE#." */ + 0x33,0x33,0x33,0x33,0x22,0x22,0x22,0x22, /* 00000288 "3333""""" */ + 0x44,0x44,0x44,0x44,0x12,0x23,0x34,0x45, /* 00000290 "DDDD.#4E" */ + 0x56,0x67,0x78,0x89,0x9A,0xAB,0xBC,0xCD, /* 00000298 "Vgx....." */ + 0xDE,0xEF,0xFF,0x55,0x01,0x00,0x00,0x00, /* 000002a0 "...U...." */ + 0x02,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000002a8 "........" */ + 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 000002b0 "gE#....." */ + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000002b8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002c0 "........" */ + 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000002c8 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000002d0 "........" */ + 0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89, /* 000002d8 "...x...." */ + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 000002e0 "gE#....." */ + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 000002e8 "gE#....." */ + 0x67,0x45,0x23,0x01,0x04,0x9C,0x00,0x00, /* 000002f0 "gE#....." */ + 0x2C,0x00,0x00,0x00,0x34,0x00,0x00,0x00, /* 000002f8 ",...4..." */ + 0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000300 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000308 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000310 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000318 "....gE#." */ + 0x03,0x00,0x00,0x00,0x88,0x88,0x77,0x77, /* 00000320 "......ww" */ + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000328 "........" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000330 "....gE#." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000338 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000340 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000348 "........" */ + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000350 "........" */ + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000358 ".......x" */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000360 "....gE#." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000368 "....gE#." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000370 "........" */ + 0x00,0x00,0x00,0x00,0xBB,0xBB,0xAA,0xAA, /* 00000378 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01, /* 00000380 "........" */ + 0xEF,0xCD,0xAB,0x78,0x00,0x00,0x00,0x00, /* 00000388 "...x...." */ }; const unsigned char TemplateAgdi[] = @@ -301,6 +325,27 @@ const unsigned char TemplateAsf[] = 0x01,0x00 /* 00000070 ".." */ }; +const unsigned char TemplateAspt[] = +{ + 0x41,0x53,0x50,0x54,0x88,0x00,0x00,0x00, /* 00000000 "ASPT...." */ + 0x01,0x2D,0x56,0x52,0x54,0x55,0x41,0x4C, /* 00000008 "..VRTUAL" */ + 0x4D,0x49,0x43,0x52,0x4F,0x53,0x46,0x54, /* 00000010 "MICROSFT" */ + 0x01,0x00,0x00,0x00,0x4D,0x53,0x46,0x54, /* 00000018 "....INTL" */ + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000020 " ." ...." */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000028 ".. ....." */ + 0x00,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000030 "........" */ + 0x04,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x08,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000040 "........" */ + 0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000048 ".. ....." */ + 0x10,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000050 "........" */ + 0x14,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000058 "........" */ + 0x18,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000060 "........" */ + 0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000068 ".. ....." */ + 0x20,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00, /* 00000070 " ......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ +}; + const unsigned char TemplateBdat[] = { 0x42,0x44,0x41,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BDAT0..." */ @@ -341,6 +386,17 @@ const unsigned char TemplateBoot[] = 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00 /* 00000020 "(.. ...." */ }; +const unsigned char TemplateCcel[] = +{ + 0x43,0x43,0x45,0x4C,0x38,0x00,0x00,0x00, /* 00000000 "CCEL8..." */ + 0x04,0x2E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x30,0x09,0x21,0x20,0x00,0x00,0x00,0x00, /* 00000020 "0.! ...." */ + 0xEF,0xCD,0xAB,0x78,0x56,0x34,0x12,0x00, /* 00000028 "...xV4.." */ + 0x78,0x56,0x34,0x12,0xEF,0xCD,0xAB,0x00 /* 00000030 "xV4....." */ +}; + const unsigned char TemplateCedt[] = { 0x43,0x45,0x44,0x54,0x9c,0x01,0x00,0x00, /* 00000000 "CEDT...." */ @@ -397,6 +453,39 @@ const unsigned char TemplateCedt[] = 0x03,0x5e,0xba,0x00 /* 00000198 ".^.." */ }; +const unsigned char TemplateCdat[] = +{ + 0xE4,0x00,0x00,0x00,0x01,0x0C,0x00,0x00, /* 00000000 "........" */ + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, /* 00000008 "........" */ + 0x03,0x00,0x08,0x00,0x04,0x56,0x00,0x00, /* 00000010 ".....V.." */ + 0x00,0x00,0x18,0x00,0xEF,0x01,0x00,0x00, /* 00000018 "........" */ + 0x89,0x67,0x45,0x23,0x01,0x00,0x00,0x00, /* 00000020 ".gE#...." */ + 0xAB,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x03,0x00,0x08,0x00,0x04,0x56,0x00,0x00, /* 00000030 ".....V.." */ + 0x01,0x00,0x18,0x00,0x44,0x04,0x64,0x00, /* 00000038 "....D.d." */ + 0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,0x00, /* 00000040 "...gE#.." */ + 0x33,0x22,0x44,0x33,0x55,0x44,0x00,0x00, /* 00000048 "3"D3UD.." */ + 0x02,0x00,0x14,0x00,0x99,0x00,0x00,0x00, /* 00000050 "........" */ + 0x00,0x00,0x00,0x00,0x78,0x56,0x34,0x12, /* 00000058 "....xV4." */ + 0x55,0x55,0x44,0x44,0x04,0x00,0x18,0x00, /* 00000060 "UUDD...." */ + 0x88,0x32,0x00,0x00,0x77,0x77,0x77,0x77, /* 00000068 ".2..wwww" */ + 0x11,0x11,0x11,0x11,0x88,0x88,0x88,0x88, /* 00000070 "........" */ + 0x22,0x22,0x22,0x22,0x05,0x00,0x20,0x00, /* 00000078 """"".. ." */ + 0x04,0x00,0x00,0x00,0x44,0x44,0x44,0x44, /* 00000080 "....DDDD" */ + 0x33,0x33,0x33,0x33,0x44,0x44,0x55,0x55, /* 00000088 "3333DDUU" */ + 0x66,0x66,0x00,0x00,0x77,0x77,0x88,0x88, /* 00000090 "ff..ww.." */ + 0x99,0x99,0x00,0x00,0x05,0x00,0x18,0x00, /* 00000098 "........" */ + 0x04,0x00,0x00,0x00,0x22,0x22,0x22,0x22, /* 000000A0 "....""""" */ + 0x11,0x11,0x11,0x11,0x34,0x12,0x56,0x78, /* 000000A8 "....4.Vx" */ + 0x11,0x11,0x00,0x00,0x05,0x00,0x30,0x00, /* 000000B0 "......0." */ + 0x08,0x00,0x00,0x00,0x66,0x66,0x66,0x66, /* 000000B8 "....ffff" */ + 0x55,0x55,0x55,0x55,0x44,0x44,0x55,0x55, /* 000000C0 "UUUUDDUU" */ + 0x66,0x66,0x00,0x00,0x77,0x77,0x88,0x88, /* 000000C8 "ff..ww.." */ + 0x99,0x99,0x00,0x00,0xAA,0xAA,0xBB,0xBB, /* 000000D0 "........" */ + 0xCC,0xCC,0x00,0x00,0x55,0x55,0x44,0x44, /* 000000D8 "....UUDD" */ + 0x33,0x33,0x00,0x00 /* 000000E0 "33.." */ +}; + const unsigned char TemplateCpep[] = { 0x43,0x50,0x45,0x50,0x34,0x00,0x00,0x00, /* 00000000 "CPEP4..." */ @@ -494,8 +583,8 @@ const unsigned char TemplateDbgp[] = const unsigned char TemplateDmar[] = { - 0x44,0x4D,0x41,0x52,0x9C,0x00,0x00,0x00, /* 00000000 "DMAR...." */ - 0x01,0xB8,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x44,0x4D,0x41,0x52,0xAC,0x00,0x00,0x00, /* 00000000 "DMAR...." */ + 0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x17,0x12,0x21,0x20,0x2F,0x01,0x00,0x00, /* 00000020 "..! /..." */ @@ -513,7 +602,9 @@ const unsigned char TemplateDmar[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00,0x05,0x00,0x10,0x00, /* 00000088 "........" */ 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00, /* 00000090 "........" */ - 0x00,0x00,0x00,0x02 /* 00000098 "...." */ + 0x00,0x00,0x00,0x02,0x06,0x00,0x10,0x00, /* 00000098 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00, /* 000000A0 "........" */ + 0x00,0x00,0x00,0x02 /* 000000A8 "...." */ }; const unsigned char TemplateDrtm[] = @@ -594,6 +685,211 @@ const unsigned char TemplateEinj[] = 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF /* 00000128 "........" */ }; +const unsigned char TemplateErdt[] = +{ + 0x45,0x52,0x44,0x54,0x44,0x06,0x00,0x00, /* 00000000 "ERDTD..." */ + 0x01,0x78,0x49,0x4e,0x54,0x45,0x4c,0x00, /* 00000008 ".xINTEL." */ + 0x49,0x4e,0x54,0x45,0x4c,0x20,0x49,0x44, /* 00000010 "INTEL ID" */ + 0x02,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c, /* 00000018 "....INTL" */ + 0x28,0x06,0x23,0x20,0x0f,0x00,0x00,0x00, /* 00000020 "(.# ...." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0xd2,0x00,0x01,0x00,0x00,0x00, /* 00000040 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x0f,0x01,0x00,0x00, /* 00000050 "........" */ + 0x00,0x00,0xfc,0xf7,0xff,0x1f,0x00,0x00, /* 00000058 "........" */ + 0x01,0x00,0x01,0x00,0x18,0x00,0x00,0x00, /* 00000060 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, /* 00000068 "........" */ + 0x00,0x00,0x08,0x00,0x00,0x00,0x0a,0x00, /* 00000070 "........" */ + 0x00,0x00,0x03,0x00,0x30,0x00,0x00,0x00, /* 00000078 "....0..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000080 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ + 0x00,0x00,0x00,0x10,0xfb,0xf7,0xff,0x1f, /* 00000090 "........" */ + 0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00, /* 00000098 "........" */ + 0x00,0x02,0x00,0x10,0x01,0x00,0x00,0x00, /* 000000a0 "........" */ + 0x00,0x00,0x04,0x00,0x38,0x00,0x00,0x00, /* 000000a8 "....8..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 000000b0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000b8 "........" */ + 0x00,0x00,0x00,0x80,0xfc,0xf7,0xff,0x1f, /* 000000c0 "........" */ + 0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00, /* 000000c8 "........" */ + 0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d8 "........" */ + 0x00,0x00,0x05,0x00,0x30,0x00,0x00,0x00, /* 000000e0 "....0..." */ + 0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000e8 "........" */ + 0x00,0x00,0x00,0x10,0xfc,0xf7,0xff,0x1f, /* 000000f0 "........" */ + 0x00,0x00,0x00,0x30,0xfc,0xf7,0xff,0x1f, /* 000000f8 "...0...." */ + 0x00,0x00,0x00,0x20,0xfc,0xf7,0xff,0x1f, /* 00000100 "... ...." */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00, /* 00000108 "........" */ + 0x00,0x00,0x00,0x00,0xd2,0x00,0x01,0x00, /* 00000110 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x0f,0x01, /* 00000120 "........" */ + 0x00,0x00,0x00,0x00,0xec,0xf7,0xff,0x1f, /* 00000128 "........" */ + 0x00,0x00,0x01,0x00,0x01,0x00,0x18,0x00, /* 00000130 "........" */ + 0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00, /* 00000138 "........" */ + 0x02,0x01,0x00,0x00,0x08,0x01,0x00,0x00, /* 00000140 "........" */ + 0x0a,0x01,0x00,0x00,0x03,0x00,0x30,0x00, /* 00000148 "......0." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x10,0xeb,0xf7, /* 00000160 "........" */ + 0xff,0x1f,0x00,0x00,0x04,0x00,0x00,0x00, /* 00000168 "........" */ + 0x08,0x00,0x00,0x02,0x00,0x10,0x01,0x00, /* 00000170 "........" */ + 0x00,0x00,0x00,0x00,0x04,0x00,0x38,0x00, /* 00000178 "......8." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000188 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x80,0xec,0xf7, /* 00000190 "........" */ + 0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00, /* 00000198 "........" */ + 0x18,0x00,0x10,0x01,0x00,0x00,0x00,0x00, /* 000001a0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001a8 "........" */ + 0x00,0x00,0x00,0x00,0x05,0x00,0x30,0x00, /* 000001b0 "......0." */ + 0x00,0x00,0x07,0x00,0x01,0x00,0x00,0x00, /* 000001b8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x10,0xec,0xf7, /* 000001c0 "........" */ + 0xff,0x1f,0x00,0x00,0x00,0x30,0xec,0xf7, /* 000001c8 ".....0.." */ + 0xff,0x1f,0x00,0x00,0x00,0x20,0xec,0xf7, /* 000001d0 "..... .." */ + 0xff,0x1f,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001d8 "........" */ + 0x08,0x00,0x00,0x00,0x00,0x00,0xd2,0x00, /* 000001e0 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001e8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, /* 000001f0 "........" */ + 0x0f,0x01,0x00,0x00,0x00,0x00,0xdc,0xf7, /* 000001f8 "........" */ + 0xff,0x1f,0x00,0x00,0x01,0x00,0x01,0x00, /* 00000200 "........" */ + 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x02, /* 00000208 "........" */ + 0x00,0x00,0x02,0x02,0x00,0x00,0x08,0x02, /* 00000210 "........" */ + 0x00,0x00,0x0a,0x02,0x00,0x00,0x03,0x00, /* 00000218 "........" */ + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "0......." */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, /* 00000230 "........" */ + 0xdb,0xf7,0xff,0x1f,0x00,0x00,0x04,0x00, /* 00000238 "........" */ + 0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x10, /* 00000240 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00, /* 00000248 "........" */ + 0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "8......." */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, /* 00000260 "........" */ + 0xdc,0xf7,0xff,0x1f,0x00,0x00,0x10,0x00, /* 00000268 "........" */ + 0x00,0x00,0x18,0x00,0x10,0x01,0x00,0x00, /* 00000270 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000278 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00, /* 00000280 "........" */ + 0x30,0x00,0x00,0x00,0x07,0x00,0x01,0x00, /* 00000288 "0......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, /* 00000290 "........" */ + 0xdc,0xf7,0xff,0x1f,0x00,0x00,0x00,0x30, /* 00000298 ".......0" */ + 0xdc,0xf7,0xff,0x1f,0x00,0x00,0x00,0x20, /* 000002a0 "....... " */ + 0xdc,0xf7,0xff,0x1f,0x00,0x00,0x01,0x00, /* 000002a8 "........" */ + 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, /* 000002b0 "........" */ + 0xd2,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000002b8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002c0 "........" */ + 0x03,0x00,0x0f,0x01,0x00,0x00,0x00,0x00, /* 000002c8 "........" */ + 0xcc,0xf7,0xff,0x1f,0x00,0x00,0x01,0x00, /* 000002d0 "........" */ + 0x01,0x00,0x18,0x00,0x00,0x00,0x03,0x00, /* 000002d8 "........" */ + 0x00,0x03,0x00,0x00,0x02,0x03,0x00,0x00, /* 000002e0 "........" */ + 0x08,0x03,0x00,0x00,0x0a,0x03,0x00,0x00, /* 000002e8 "........" */ + 0x03,0x00,0x30,0x00,0x00,0x00,0x00,0x00, /* 000002f0 "..0....." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000002f8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000300 "........" */ + 0x00,0x10,0xcb,0xf7,0xff,0x1f,0x00,0x00, /* 00000308 "........" */ + 0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x02, /* 00000310 "........" */ + 0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000318 "........" */ + 0x04,0x00,0x38,0x00,0x00,0x00,0x00,0x00, /* 00000320 "..8....." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000328 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000330 "........" */ + 0x00,0x80,0xcc,0xf7,0xff,0x1f,0x00,0x00, /* 00000338 "........" */ + 0x10,0x00,0x00,0x00,0x18,0x00,0x10,0x01, /* 00000340 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000348 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000350 "........" */ + 0x05,0x00,0x30,0x00,0x00,0x00,0x07,0x00, /* 00000358 "..0....." */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000360 "........" */ + 0x00,0x10,0xcc,0xf7,0xff,0x1f,0x00,0x00, /* 00000368 "........" */ + 0x00,0x30,0xcc,0xf7,0xff,0x1f,0x00,0x00, /* 00000370 ".0......" */ + 0x00,0x20,0xcc,0xf7,0xff,0x1f,0x00,0x00, /* 00000378 ". ......" */ + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, /* 00000380 "........" */ + 0x00,0x00,0x92,0x01,0x02,0x00,0x10,0x00, /* 00000388 "........" */ + 0x0b,0x08,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000390 "........" */ + 0x00,0x00,0x10,0x00,0x7f,0x00,0x00,0x00, /* 00000398 "........" */ + 0x00,0xb0,0xb8,0xf6,0xff,0x1f,0x00,0x00, /* 000003a0 "........" */ + 0x01,0x00,0x02,0x00,0xd8,0x00,0x00,0x00, /* 000003a8 "........" */ + 0x10,0x00,0x01,0x08,0x00,0x00,0x00,0x00, /* 000003b0 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00, /* 000003b8 "........" */ + 0x00,0x04,0x01,0x08,0x00,0x00,0x00,0x00, /* 000003c0 "........" */ + 0x02,0x00,0x01,0x08,0x00,0x00,0x00,0x00, /* 000003c8 "........" */ + 0x02,0x01,0x01,0x08,0x00,0x00,0x00,0x00, /* 000003d0 "........" */ + 0x03,0x00,0x02,0x08,0x00,0x00,0x00,0x00, /* 000003d8 "........" */ + 0x04,0x00,0x01,0x0a,0x00,0x00,0x00,0x00, /* 000003e0 "........" */ + 0x04,0x00,0x00,0x00,0x02,0x08,0x00,0x00, /* 000003e8 "........" */ + 0x00,0x00,0x05,0x00,0x01,0x0a,0x00,0x00, /* 000003f0 "........" */ + 0x00,0x00,0x05,0x00,0x00,0x00,0x02,0x08, /* 000003f8 "........" */ + 0x00,0x00,0x00,0x00,0x06,0x00,0x01,0x0a, /* 00000400 "........" */ + 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00, /* 00000408 "........" */ + 0x02,0x08,0x00,0x00,0x00,0x00,0x07,0x00, /* 00000410 "........" */ + 0x01,0x0a,0x00,0x00,0x00,0x00,0x07,0x00, /* 00000418 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00, /* 00000420 "........" */ + 0x1f,0x00,0x01,0x08,0x00,0x00,0x00,0x00, /* 00000428 "........" */ + 0x1f,0x04,0x01,0x08,0x00,0x00,0x00,0x00, /* 00000430 "........" */ + 0x1f,0x05,0x01,0x08,0x00,0x00,0x00,0x0d, /* 00000438 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x0e, /* 00000440 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x0f, /* 00000448 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x10, /* 00000450 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x10, /* 00000458 "........" */ + 0x00,0x04,0x01,0x08,0x00,0x00,0x00,0x60, /* 00000460 ".......`" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x60, /* 00000468 ".......`" */ + 0x00,0x04,0x01,0x08,0x00,0x00,0x00,0xb0, /* 00000470 "........" */ + 0x00,0x00,0x01,0x08,0x00,0x00,0x00,0xb0, /* 00000478 "........" */ + 0x00,0x04,0x07,0x00,0x30,0x00,0x00,0x00, /* 00000480 "....0..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000488 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000490 "........" */ + 0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f, /* 00000498 "........" */ + 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x05, /* 000004a0 "........" */ + 0x08,0x00,0xf8,0xff,0x07,0x00,0x00,0x00, /* 000004a8 "........" */ + 0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00, /* 000004b0 "....@..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 000004b8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000004c0 "........" */ + 0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f, /* 000004c8 "........" */ + 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x03, /* 000004d0 "........" */ + 0x00,0x04,0x08,0x00,0x08,0x00,0x00,0x00, /* 000004d8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x28,0xf8,0xff, /* 000004e0 ".....(.." */ + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000004e8 "........" */ + 0x00,0x00,0x0a,0x00,0x28,0x00,0x00,0x00, /* 000004f0 "....(..." */ + 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00, /* 000004f8 "........" */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000500 "........" */ + 0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f, /* 00000508 "........" */ + 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x02, /* 00000510 "........" */ + 0x10,0x00,0x00,0x00,0x2a,0x01,0x02,0x00, /* 00000518 "....*..." */ + 0x10,0x00,0x0b,0x08,0x00,0x00,0x00,0x00, /* 00000520 "........" */ + 0x00,0x00,0x00,0x00,0x11,0x00,0x7f,0x00, /* 00000528 "........" */ + 0x00,0x00,0x00,0xb0,0x38,0xf6,0xff,0x1f, /* 00000530 "....8..." */ + 0x00,0x00,0x01,0x00,0x02,0x00,0x70,0x00, /* 00000538 "......p." */ + 0x00,0x00,0x11,0x00,0x01,0x08,0x01,0x00, /* 00000540 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000548 "........" */ + 0x00,0x00,0x00,0x04,0x01,0x08,0x01,0x00, /* 00000550 "........" */ + 0x00,0x00,0x02,0x00,0x01,0x08,0x01,0x00, /* 00000558 "........" */ + 0x00,0x00,0x02,0x01,0x01,0x08,0x01,0x00, /* 00000560 "........" */ + 0x00,0x0d,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000568 "........" */ + 0x00,0x0e,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000570 "........" */ + 0x00,0x0f,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000578 "........" */ + 0x00,0x10,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000580 "........" */ + 0x00,0x10,0x00,0x04,0x01,0x08,0x01,0x00, /* 00000588 "........" */ + 0x00,0x60,0x00,0x00,0x01,0x08,0x01,0x00, /* 00000590 ".`......" */ + 0x00,0x60,0x00,0x04,0x01,0x08,0x01,0x00, /* 00000598 ".`......" */ + 0x00,0xb0,0x00,0x00,0x01,0x08,0x01,0x00, /* 000005a0 "........" */ + 0x00,0xb0,0x00,0x04,0x07,0x00,0x30,0x00, /* 000005a8 "......0." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000005b0 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000005b8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6, /* 000005c0 "......8." */ + 0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00, /* 000005c8 "........" */ + 0x00,0x05,0x08,0x00,0xf8,0xff,0x07,0x00, /* 000005d0 "........" */ + 0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, /* 000005d8 "......@." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000005e0 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000005e8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6, /* 000005f0 "......8." */ + 0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00, /* 000005f8 "........" */ + 0x00,0x03,0x00,0x04,0x08,0x00,0x08,0x00, /* 00000600 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28, /* 00000608 ".......(" */ + 0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00, /* 00000610 "........" */ + 0x00,0x00,0x00,0x00,0x0a,0x00,0x28,0x00, /* 00000618 "......(." */ + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000620 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000628 "........" */ + 0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6, /* 00000630 "......8." */ + 0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00, /* 00000638 "........" */ + 0x00,0x02,0x10,0x00, /* 00000640 "...." */ +}; + const unsigned char TemplateErst[] = { 0x45,0x52,0x53,0x54,0x30,0x02,0x00,0x00, /* 00000000 "ERST0..." */ @@ -1063,11 +1359,11 @@ const unsigned char TemplateLpit[] = const unsigned char TemplateMadt[] = { - 0x41,0x50,0x49,0x43,0x6A,0x01,0x00,0x00, /* 00000000 "APICj..." */ - 0x05,0x9D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x41,0x50,0x49,0x43,0x62,0x02,0x00,0x00, /* 00000000 "APICb..." */ + 0x07,0x44,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".DINTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00, /* 00000020 ".. ...." */ + 0x28,0x06,0x23,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.# ...." */ 0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */ 0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ @@ -1085,7 +1381,7 @@ const unsigned char TemplateMadt[] = 0x00,0x00,0x09,0x10,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x0A,0x0C,0x05,0x00,0x00,0x00, /* 000000A8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x50, /* 000000B0 ".......P" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x52, /* 000000B0 ".......R" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ @@ -1096,19 +1392,50 @@ const unsigned char TemplateMadt[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18, /* 00000100 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ + 0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ - 0x00,0x00,0x01,0x00,0x00,0x00,0x0D,0x18, /* 00000118 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000128 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x10, /* 00000130 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x14, /* 00000140 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000118 "........" */ + 0x0D,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ + 0x0E,0x10,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ + 0x0F,0x14,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ - 0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00, /* 00000158 "........" */ + 0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00, /* 00000158 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ - 0x00,0x00 /* 00000168 ".." */ + 0x00,0x00,0x00,0x00,0x11,0x0F,0x01,0x01, /* 00000168 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, /* 00000170 "........" */ + 0x00,0x00,0x00,0x12,0x17,0x01,0x00,0x14, /* 00000178 "........" */ + 0xE0,0x1F,0x00,0x00,0x00,0x00,0x80,0x00, /* 00000180 "........" */ + 0x02,0x03,0xFF,0xFF,0xFF,0x00,0x00,0x00, /* 00000188 "........" */ + 0x00,0xFF,0x13,0x15,0x01,0x80,0x00,0x00, /* 00000190 "........" */ + 0xFB,0xFD,0x0E,0x00,0x00,0x40,0x00,0x00, /* 00000198 ".....@.." */ + 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x14, /* 000001A0 "........" */ + 0x0D,0x01,0x03,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */ + 0x00,0x00,0x00,0x00,0x15,0x13,0x01,0x00, /* 000001B0 "........" */ + 0x00,0xF0,0x2F,0x00,0x00,0x00,0x00,0x40, /* 000001B8 "../....@" */ + 0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x16, /* 000001C0 "........" */ + 0x11,0x01,0x00,0x00,0x00,0x10,0x00,0x00, /* 000001C8 "........" */ + 0x00,0x00,0x00,0x10,0x00,0x00,0x40,0x00, /* 000001D0 "......@." */ + 0x17,0x0E,0x01,0x00,0x20,0x00,0x10,0x00, /* 000001D8 ".... ..." */ + 0x00,0x00,0x00,0x00,0x10,0x13,0x18,0x24, /* 000001E0 ".......$" */ + 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ + 0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x10, /* 00000200 ".(......" */ + 0x00,0x00,0x19,0x10,0x01,0x00,0x00,0x00, /* 00000208 "........" */ + 0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00, /* 00000210 "........" */ + 0x00,0x18,0x1A,0x24,0x01,0x00,0x00,0x00, /* 00000218 "...$...." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "........" */ + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, /* 00000228 "....`..." */ + 0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0x00, /* 00000230 "........" */ + 0x00,0x00,0x00,0x80,0x00,0x00,0x1B,0x24, /* 00000238 ".......$" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000240 "........" */ + 0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00, /* 00000248 "..`....." */ + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, /* 00000250 "....`..." */ + 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */ + 0x00,0x00 /* 00000260 ".." */ }; const unsigned char TemplateMcfg[] = @@ -1153,6 +1480,42 @@ const unsigned char TemplateMsdm[] = 0x22,0x23,0x24,0x25 /* 00000060 ""#$%" */ }; +const unsigned char TemplateMpam[] = +{ + 0x4D,0x50,0x41,0x4D,0xFC,0x00,0x00,0x00, /* 00000000 "MPAM...." */ + 0x02,0x35,0x48,0x49,0x53,0x49,0x20,0x20, /* 00000008 ".5HISI " */ + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ + 0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x28,0x06,0x23,0x20,0x60,0x00,0x00,0x00, /* 00000020 "(.# `..." */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0, /* 00000028 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000030 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ + 0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "2......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ + 0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00, /* 00000068 "........" */ + 0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x00, /* 00000070 ".... ..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ + 0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, /* 00000080 "....x..." */ + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xD0, /* 00000088 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000090 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ + 0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "2......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ + 0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00, /* 000000C8 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000D0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ + 0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00, /* 000000E0 "........" */ + 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 000000E8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ + 0x00,0x00,0x00,0x00 /* 000000F8 "...." */ +}; + const unsigned char TemplateMpst[] = { 0x4D,0x50,0x53,0x54,0xB6,0x00,0x00,0x00, /* 00000000 "MPST...." */ @@ -1180,6 +1543,38 @@ const unsigned char TemplateMpst[] = 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000B0 "......" */ }; +const unsigned char TemplateMrrm[] = +{ + 0x4D,0x52,0x52,0x4D,0xE0,0x00,0x00,0x00, /* 00000000 "MRRM...." */ + 0x01,0x6F,0x49,0x4E,0x54,0x45,0x4C,0x00, /* 00000008 ".oINTEL." */ + 0x49,0x4E,0x54,0x45,0x4C,0x20,0x49,0x44, /* 00000010 "INTEL ID" */ + 0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x28,0x06,0x23,0x20,0x02,0x00,0x00,0x00, /* 00000020 "(.# ...." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000040 ".. ....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00, /* 00000050 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000060 ".. ....." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000068 "........" */ + 0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00, /* 00000070 "........" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000080 ".. ....." */ + 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, /* 00000088 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00, /* 00000090 "........" */ + 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 000000A0 ".. ....." */ + 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00, /* 000000A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00, /* 000000B0 "........" */ + 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ + 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 000000C0 ".. ....." */ + 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 000000C8 "........" */ + 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /* 000000D0 "........" */ + 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00 /* 000000D8 "........" */ +}; + const unsigned char TemplateMsct[] = { 0x4D,0x53,0x43,0x54,0x90,0x00,0x00,0x00, /* 00000000 "MSCT...." */ @@ -1255,78 +1650,6 @@ const unsigned char TemplateNfit[] = 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000180 "........" */ }; -const unsigned char TemplateNhlt[] = -{ - 0x4E,0x48,0x4C,0x54,0x1E,0x02,0x00,0x00, /* 00000000 "NHLT...." */ - 0x01,0xF7,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ - 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ - 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x30,0x09,0x21,0x20,0x04,0xAD,0x00,0x00, /* 00000020 "0.! ...." */ - 0x00,0x02,0x06,0x07,0x00,0x30,0xAE,0x09, /* 00000028 ".....0.." */ - 0x00,0x0A,0x00,0x00,0x00,0x02,0x03,0x0D, /* 00000030 "........" */ - 0x38,0x00,0x00,0x00,0xCC,0x01,0x1F,0x02, /* 00000038 "8......." */ - 0x04,0x00,0x13,0x00,0x09,0x00,0x11,0x00, /* 00000040 "........" */ - 0x04,0x20,0x07,0x00,0x09,0x00,0x18,0x00, /* 00000048 ". ......" */ - 0x22,0x00,0x11,0x00,0x15,0x00,0x05,0x03, /* 00000050 ""......." */ - 0x13,0x00,0x09,0x00,0x11,0x00,0x04,0x20, /* 00000058 "....... " */ - 0x07,0x00,0x09,0x00,0x18,0x00,0x22,0x00, /* 00000060 "......"." */ - 0x11,0x00,0x15,0x00,0xAA,0xAA,0x99,0x99, /* 00000068 "........" */ - 0x78,0x56,0x34,0x12,0x02,0xFE,0xFF,0x78, /* 00000070 "xV4....x" */ - 0x56,0x44,0x33,0x00,0x00,0x66,0x55,0x00, /* 00000078 "VD3..fU." */ - 0x00,0x00,0x80,0x16,0x00,0x32,0x00,0x04, /* 00000080 ".....2.." */ - 0x00,0x99,0x99,0x88,0x88,0x6E,0x88,0x9F, /* 00000088 ".....n.." */ - 0xA6,0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B, /* 00000090 "..l.E..{" */ - 0x5D,0xCE,0x24,0xC5,0x53,0x02,0x00,0x00, /* 00000098 "].$.S..." */ - 0x00,0x30,0x40,0xFE,0xFF,0x78,0x56,0x44, /* 000000A0 ".0@..xVD" */ - 0x33,0x00,0x00,0x66,0x55,0x00,0x00,0x00, /* 000000A8 "3..fU..." */ - 0x80,0x16,0x00,0x32,0x00,0x04,0x00,0x99, /* 000000B0 "...2...." */ - 0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6,0xEB, /* 000000B8 "...n...." */ - 0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D,0xCE, /* 000000C0 "l.E..{]." */ - 0x24,0xC5,0x53,0x03,0x00,0x00,0x00,0x50, /* 000000C8 "$.S....P" */ - 0x60,0x70,0x48,0x00,0x00,0x00,0x05,0x06, /* 000000D0 "`pH....." */ - 0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00, /* 000000D8 "..4....." */ - 0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00, /* 000000E0 "........" */ - 0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56, /* 000000E8 "......xV" */ - 0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00, /* 000000F0 "D3..fU.." */ - 0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00, /* 000000F8 "....2..." */ - 0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6, /* 00000100 "....n..." */ - 0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D, /* 00000108 ".l.E..{]" */ - 0xCE,0x24,0xC5,0x53,0x02,0x00,0x00,0x00, /* 00000110 ".$.S...." */ - 0x70,0x80,0x80,0x00,0x00,0x00,0x02,0x06, /* 00000118 "p......." */ - 0x07,0x00,0x30,0xAE,0x09,0x00,0x0A,0x00, /* 00000120 "..0....." */ - 0x00,0x00,0x02,0x03,0x0D,0x07,0x00,0x00, /* 00000128 "........" */ - 0x00,0xCC,0x03,0x09,0x34,0x12,0x28,0x01, /* 00000130 "....4.(." */ - 0x02,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00, /* 00000138 "...xVD3." */ - 0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16, /* 00000140 ".fU....." */ - 0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88, /* 00000148 ".2......" */ - 0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94, /* 00000150 ".n....l." */ - 0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5, /* 00000158 "E..{].$." */ - 0x53,0x04,0x00,0x00,0x00,0x70,0x80,0x90, /* 00000160 "S....p.." */ - 0xA0,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00, /* 00000168 "...xVD3." */ - 0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16, /* 00000170 ".fU....." */ - 0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88, /* 00000178 ".2......" */ - 0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94, /* 00000180 ".n....l." */ - 0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5, /* 00000188 "E..{].$." */ - 0x53,0x05,0x00,0x00,0x00,0x70,0x80,0x90, /* 00000190 "S....p.." */ - 0xA0,0xB0,0x7C,0x00,0x00,0x00,0x05,0x06, /* 00000198 "..|....." */ - 0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00, /* 000001A0 "..4....." */ - 0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00, /* 000001A8 "........" */ - 0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56, /* 000001B0 "......xV" */ - 0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00, /* 000001B8 "D3..fU.." */ - 0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00, /* 000001C0 "....2..." */ - 0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6, /* 000001C8 "....n..." */ - 0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D, /* 000001D0 ".l.E..{]" */ - 0xCE,0x24,0xC5,0x53,0x11,0x00,0x00,0x00, /* 000001D8 ".$.S...." */ - 0x00,0x01,0x32,0x03,0x04,0x05,0x06,0x37, /* 000001E0 "..2....7" */ - 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x3F, /* 000001E8 ".......?" */ - 0x0A,0x01,0x00,0x01,0x32,0x03,0x04,0x05, /* 000001F0 "....2..." */ - 0x06,0x37,0x08,0x09,0x0A,0x0B,0x0C,0x0D, /* 000001F8 ".7......" */ - 0x0E,0x3F,0x44,0x9A,0x00,0x01,0x32,0x03, /* 00000200 ".?D...2." */ - 0x04,0x05,0x06,0x37,0x08,0x09,0x0A,0x0B, /* 00000208 "...7...." */ - 0x0C,0x0D,0x0E,0x3F,0x0A,0x0B,0x04,0x00, /* 00000210 "...?...." */ - 0x00,0x00,0xEF,0xBE,0xAD,0xDE /* 00000218 "......" */ -}; - const unsigned char TemplatePcct[] = { 0x50,0x43,0x43,0x54,0xAE,0x02,0x00,0x00, /* 00000000 "PCCT...." */ @@ -1430,20 +1753,27 @@ const unsigned char TemplatePdtt[] = const unsigned char TemplatePhat [] = { - 0x50,0x48,0x41,0x54,0x6F,0x00,0x00,0x00, /* 00000000 "PHATo..." */ - 0x01,0xC7,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x50,0x48,0x41,0x54,0xA2,0x00,0x00,0x00, /* 00000000 "PHAT...." */ + 0x01,0xCA,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x05,0x01,0x21,0x20,0x00,0x00,0x28,0x00, /* 00000020 "..! ..(." */ + 0x31,0x03,0x22,0x20,0x00,0x00,0x28,0x00, /* 00000020 "1." ..(." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ 0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47, /* 00000030 "0....].G" */ 0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49, /* 00000038 "...-.@.I" */ 0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01, /* 00000040 "........" */ - 0x0C,0x0B,0x0A,0x09,0x01,0x00,0x23,0x00, /* 00000048 "......#." */ + 0x0C,0x0B,0x0A,0x09,0x01,0x00,0x2E,0x00, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x30,0x05,0xAF,0x91, /* 00000050 "....0..." */ 0x86,0x5D,0x0E,0x47,0xA6,0xB0,0x0A,0x2D, /* 00000058 ".].G...-" */ - 0xB9,0x40,0x82,0x49,0x00,0x00,0x00,0x00, /* 00000060 ".@.I...." */ - 0x61,0x73,0x64,0x66,0x00,0xFF,0x11 /* 00000068 "asdf..." */ + 0xB9,0x40,0x82,0x49,0x2A,0x00,0x00,0x00, /* 00000060 ".@.I*..." */ + 0x41,0x00,0x42,0x00,0x43,0x00,0x44,0x00, /* 00000068 "A.B.C.D." */ + 0x45,0x00,0x46,0x00,0x00,0x00,0x01,0x02, /* 00000070 "E.F....." */ + 0x03,0x04,0x00,0x00,0x28,0x00,0x00,0x00, /* 00000078 "....(..." */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x05, /* 00000080 "......0." */ + 0xAF,0x91,0x86,0x5D,0x0E,0x47,0xA6,0xB0, /* 00000088 "...].G.." */ + 0x0A,0x2D,0xB9,0x40,0x82,0x49,0x08,0x07, /* 00000090 ".-.@.I.." */ + 0x06,0x05,0x04,0x03,0x02,0x01,0x0C,0x0B, /* 00000098 "........" */ + 0x0A,0x09 /* 000000A0 ".." */ }; const unsigned char TemplatePmtt[] = @@ -1594,6 +1924,17 @@ const unsigned char TemplateRasf[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */ }; +const unsigned char TemplateRas2[] = +{ + 0x52,0x41,0x53,0x32,0x38,0x00,0x00,0x00, /* 00000000 "RAS28..." */ + 0x01,0x28,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".(INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x28,0x06,0x23,0x20,0x00,0x00,0x02,0x00, /* 00000020 "(.# ...." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ + 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00 /* 00000030 "........" */ +}; + const unsigned char TemplateRgrt[] = { 0x52,0x47,0x52,0x54,0x50,0x00,0x00,0x00, /* 00000000 "RGRTP..." */ @@ -1608,6 +1949,49 @@ const unsigned char TemplateRgrt[] = 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 /* 00000048 " !"#$%&'" */ }; +const unsigned char TemplateRhct[] = +{ + 0x52,0x48,0x43,0x54,0x96,0x00,0x00,0x00, /* 00000000 "RHCT...." */ + 0x01,0x6D,0x4F,0x45,0x4D,0x43,0x41,0x00, /* 00000008 ".mOEMCA." */ + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x04,0x04,0x25,0x20,0x00,0x00,0x00,0x00, /* 00000020 "..% ...." */ + 0x80,0x96,0x98,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x04,0x00,0x00,0x00,0x38,0x00,0x00,0x00, /* 00000030 "....8..." */ + 0x00,0x00,0x34,0x00,0x01,0x00,0x2B,0x00, /* 00000038 "..4...+." */ + 0x72,0x76,0x36,0x34,0x69,0x6D,0x61,0x66, /* 00000040 "rv64imaf" */ + 0x64,0x63,0x68,0x5F,0x7A,0x69,0x63,0x73, /* 00000048 "dch_zics" */ + 0x72,0x5F,0x7A,0x69,0x66,0x65,0x6E,0x63, /* 00000050 "r_zifenc" */ + 0x65,0x69,0x5F,0x7A,0x62,0x61,0x5F,0x7A, /* 00000058 "ei_zba_z" */ + 0x62,0x62,0x5F,0x7A,0x62,0x63,0x5F,0x7A, /* 00000060 "bb_zbc_z" */ + 0x62,0x73,0x00,0x00,0x01,0x00,0x0A,0x00, /* 00000068 "bs......" */ + 0x01,0x00,0x00,0x06,0x06,0x06,0x02,0x00, /* 00000070 "........" */ + 0x08,0x00,0x01,0x00,0x00,0x02,0xFF,0xFF, /* 00000078 "........" */ + 0x18,0x00,0x01,0x00,0x03,0x00,0x00,0x00, /* 00000080 "........" */ + 0x00,0x00,0x3B,0x00,0x00,0x00,0x6C,0x00, /* 00000088 "..;...l." */ + 0x00,0x00,0x76,0x00,0x00,0x00 /* 00000090 "..v..." */ +}; + +const unsigned char TemplateRimt[] = +{ + 0x52,0x49,0x4d,0x54,0x80,0x00,0x00,0x00, /* 00000000 "RIMT...." */ + 0x01,0xe1,0x42,0x4f,0x43,0x48,0x53,0x20, /* 00000008 ".pBOCHS " */ + 0x42,0x58,0x50,0x43,0x20,0x20,0x20,0x20, /* 00000010 "BXPC " */ + 0x01,0x00,0x00,0x00,0x42,0x58,0x50,0x43, /* 00000018 "....INTL" */ + 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000020 "..$ ...." */ + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "0......." */ + 0x00,0x01,0x28,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..(....." */ + 0x52,0x53,0x43,0x56,0x30,0x30,0x30,0x34, /* 00000038 "RSCV0004" */ + 0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00, /* 00000040 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00, /* 00000050 "......(." */ + 0x01,0x01,0x28,0x00,0x00,0x00,0x01,0x00, /* 00000058 "..(....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ + 0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ + 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000078 "0......." */ +}; + const unsigned char TemplateRsdp[] = { 0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */ @@ -1795,8 +2179,8 @@ const unsigned char TemplateSlit[] = const unsigned char TemplateSpcr[] = { - 0x53,0x50,0x43,0x52,0x50,0x00,0x00,0x00, /* 00000000 "SPCRP..." */ - 0x01,0xE3,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x53,0x50,0x43,0x52,0x5A,0x00,0x00,0x00, /* 00000000 "SPCRZ..." */ + 0x04,0x4E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ @@ -1804,7 +2188,9 @@ const unsigned char TemplateSpcr[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x02,0x00,0x58,0x00, /* 00000050 "......X." */ + 0x2E,0x00 /* 00000058 ".." */ }; const unsigned char TemplateSpmi[] = @@ -1822,8 +2208,8 @@ const unsigned char TemplateSpmi[] = const unsigned char TemplateSrat[] = { - 0x53,0x52,0x41,0x54,0xBE,0x00,0x00,0x00, /* 00000000 "SRAT...." */ - 0x03,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x53,0x52,0x41,0x54,0xD2,0x00,0x00,0x00, /* 00000000 "SRAT...." */ + 0x03,0xB6,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x29,0x06,0x18,0x20,0x01,0x00,0x00,0x00, /* 00000020 ").. ...." */ @@ -1845,7 +2231,10 @@ const unsigned char TemplateSrat[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000B8 "......" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x14, /* 000000B8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ + 0x00,0x00 /* 000000D0 ".." */ }; const unsigned char TemplateStao[] = diff --git a/sys/contrib/dev/acpica/compiler/dtutils.c b/sys/contrib/dev/acpica/compiler/dtutils.c index 875e20e5df5a..18ea18cefdd6 100644 --- a/sys/contrib/dev/acpica/compiler/dtutils.c +++ b/sys/contrib/dev/acpica/compiler/dtutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -436,9 +436,14 @@ DtGetFieldType ( case ACPI_DMT_RAW_BUFFER: case ACPI_DMT_BUF7: case ACPI_DMT_BUF10: + case ACPI_DMT_BUF11: case ACPI_DMT_BUF12: case ACPI_DMT_BUF16: case ACPI_DMT_BUF18: + case ACPI_DMT_BUF24: + case ACPI_DMT_BUF26: + case ACPI_DMT_BUF32: + case ACPI_DMT_BUF112: case ACPI_DMT_BUF128: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PMTT_VENDOR: @@ -584,12 +589,7 @@ DtGetFieldLength ( case ACPI_DMT_IVRS_DE: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: - case ACPI_DMT_NHLT1: - case ACPI_DMT_NHLT1a: - case ACPI_DMT_NHLT1b: - case ACPI_DMT_NHLT1c: - case ACPI_DMT_NHLT1d: - case ACPI_DMT_NHLT1f: + case ACPI_DMT_MPAM_LOCATOR: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: @@ -601,6 +601,7 @@ DtGetFieldLength ( case ACPI_DMT_AEST_XFACE: case ACPI_DMT_AEST_XRUPT: case ACPI_DMT_ASF: + case ACPI_DMT_CDAT: case ACPI_DMT_HESTNTYP: case ACPI_DMT_FADTPM: case ACPI_DMT_EINJACT: @@ -613,14 +614,16 @@ DtGetFieldLength ( ByteLength = 1; break; + case ACPI_DMT_ASPT: case ACPI_DMT_UINT16: case ACPI_DMT_DMAR: + case ACPI_DMT_ERDT: case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: - case ACPI_DMT_NHLT1e: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PHAT: + case ACPI_DMT_RHCT: ByteLength = 2; break; @@ -734,6 +737,11 @@ DtGetFieldLength ( ByteLength = 10; break; + case ACPI_DMT_BUF11: + + ByteLength = 11; + break; + case ACPI_DMT_BUF12: ByteLength = 12; @@ -750,6 +758,26 @@ DtGetFieldLength ( ByteLength = 18; break; + case ACPI_DMT_BUF24: + + ByteLength = 24; + break; + + case ACPI_DMT_BUF26: + + ByteLength = 26; + break; + + case ACPI_DMT_BUF32: + + ByteLength = 32; + break; + + case ACPI_DMT_BUF112: + + ByteLength = 112; + break; + case ACPI_DMT_BUF128: ByteLength = 128; @@ -800,7 +828,7 @@ DtSum ( UINT8 *Sum = ReturnValue; - Checksum = AcpiTbChecksum (Subtable->Buffer, Subtable->Length); + Checksum = AcpiUtChecksum (Subtable->Buffer, Subtable->Length); *Sum = (UINT8) (*Sum + Checksum); } diff --git a/sys/contrib/dev/acpica/compiler/preprocess.h b/sys/contrib/dev/acpica/compiler/preprocess.h index 9c25dd132a74..26a11f573402 100644 --- a/sys/contrib/dev/acpica/compiler/preprocess.h +++ b/sys/contrib/dev/acpica/compiler/preprocess.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -249,6 +249,7 @@ typedef struct directive_info */ PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MainTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MacroTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ +PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_MacroTokenReplaceBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN char PR_INIT_GLOBAL (*AslGbl_ExpressionTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN UINT32 AslGbl_PreprocessorLineNumber; @@ -370,6 +371,14 @@ PrError ( UINT32 Column); void +PrReplaceResizeSubstring( + PR_MACRO_ARG *Args, + UINT32 Diff1, + UINT32 Diff2, + UINT32 i, + char *Token); + +char * PrReplaceData ( char *Buffer, UINT32 LengthToRemove, diff --git a/sys/contrib/dev/acpica/compiler/prexpress.c b/sys/contrib/dev/acpica/compiler/prexpress.c index 54609cea4152..b2e7b785c5e9 100644 --- a/sys/contrib/dev/acpica/compiler/prexpress.c +++ b/sys/contrib/dev/acpica/compiler/prexpress.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/prmacros.c b/sys/contrib/dev/acpica/compiler/prmacros.c index 2d579af9c7b7..6d2acf52b980 100644 --- a/sys/contrib/dev/acpica/compiler/prmacros.c +++ b/sys/contrib/dev/acpica/compiler/prmacros.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -393,10 +393,10 @@ PrAddMacro ( UINT16 UseCount = 0; UINT16 ArgCount = 0; UINT32 Depth = 1; + /*UINT32 Depth = 1;*/ UINT32 EndOfArgList; char BufferChar; - /* Find the end of the arguments list */ TokenOffset = Name - AslGbl_MainTokenBuffer + strlen (Name) + 1; @@ -437,6 +437,7 @@ PrAddMacro ( for (i = 0; i < PR_MAX_MACRO_ARGS; i++) { Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); + if (!Token) { /* This is the case for a NULL macro body */ @@ -454,14 +455,13 @@ PrAddMacro ( } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID - "Macro arg: %s \n", + "Macro param: %s\n", AslGbl_CurrentLineNumber, Token); Args[i].Name = UtLocalCalloc (strlen (Token) + 1); strcpy (Args[i].Name, Token); Args[i].UseCount = 0; - ArgCount++; if (ArgCount >= PR_MAX_MACRO_ARGS) { @@ -476,7 +476,6 @@ PrAddMacro ( /* Match each method arg in the macro body for later use */ - Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); while (Token) { /* Search the macro arg list for matching arg */ @@ -496,12 +495,14 @@ PrAddMacro ( Args[i].Offset[UseCount] = (Token - AslGbl_MainTokenBuffer) - MacroBodyOffset; + DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID - "Macro Arg #%u: %s UseCount %u Offset %u \n", + "Macro Arg #%u: %s UseCount %u Offset %u\n", AslGbl_CurrentLineNumber, i, Token, UseCount+1, Args[i].Offset[UseCount]); Args[i].UseCount++; + if (Args[i].UseCount >= PR_MAX_ARG_INSTANCES) { PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS, @@ -543,7 +544,7 @@ AddMacroToList: } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID - "Macro body: %s \n", + "Macro body: %s\n", AslGbl_CurrentLineNumber, BodyInSource); /* Add macro to the #define list */ @@ -596,7 +597,8 @@ PrDoMacroInvocation ( UINT32 TokenOffset; UINT32 Length; UINT32 i; - + UINT32 Diff1; + UINT32 Diff2; /* Take a copy of the macro body for expansion */ @@ -610,6 +612,7 @@ PrDoMacroInvocation ( /* This macro has no arguments */ Token = PrGetNextToken (NULL, PR_MACRO_ARGUMENTS, Next); + if (!Token) { goto BadInvocation; @@ -634,32 +637,44 @@ PrDoMacroInvocation ( goto BadInvocation; } + /* + * Avoid optimizing using just 1 signed int due to specific + * non-portable implementations of signed ints + */ + Diff1 = strlen (Args->Name) > strlen (Token) ? strlen (Args->Name) - + strlen (Token) : 0; + + Diff2 = strlen (Args->Name) < strlen (Token) ? strlen (Token) - + strlen (Args->Name) : 0; + /* Replace all instances of this argument */ for (i = 0; i < Args->UseCount; i++) { - /* Offset zero indicates "arg not used" */ - /* TBD: Not really needed now, with UseCount available */ + /* + * To test the output of the preprocessed macro function that + * is passed to the compiler + */ - if (Args->Offset[i] == 0) - { - break; - } + /* + * fprintf (stderr, "Current token = %s \t Current arg_name = %s \ + * \t strlen (Token) = %u \t strlen (Args->Name) = %u \t Offset = %u \ + * \t UseCount = %u \t", Token, Args->Name, strlen (Token), \ + * strlen (Args->Name), Args->Offset[i], Args->UseCount); + */ + + AslGbl_MacroTokenReplaceBuffer = (char *) calloc ((strlen (AslGbl_MacroTokenBuffer)), sizeof (char)); - PrReplaceData ( - &AslGbl_MacroTokenBuffer[Args->Offset[i]], strlen (Args->Name), - Token, strlen (Token)); + PrReplaceResizeSubstring (Args, Diff1, Diff2, i, Token); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID - "ExpandArg: %s \n", + "ExpandArg: %s\n", AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer); } Args++; } - /* TBD: need to make sure macro was not invoked with too many arguments */ - if (!Token) { return; @@ -676,13 +691,12 @@ PrDoMacroInvocation ( return; - BadInvocation: PrError (ASL_ERROR, ASL_MSG_INVALID_INVOCATION, THIS_TOKEN_OFFSET (MacroStart)); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID - "Bad macro invocation: %s \n", + "Bad macro invocation: %s\n", AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer); return; } diff --git a/sys/contrib/dev/acpica/compiler/prparser.l b/sys/contrib/dev/acpica/compiler/prparser.l index f17a38bc4a28..fe0495121911 100644 --- a/sys/contrib/dev/acpica/compiler/prparser.l +++ b/sys/contrib/dev/acpica/compiler/prparser.l @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/prparser.y b/sys/contrib/dev/acpica/compiler/prparser.y index 32e88785d9ae..47edb20dcba8 100644 --- a/sys/contrib/dev/acpica/compiler/prparser.y +++ b/sys/contrib/dev/acpica/compiler/prparser.y @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c index f33ea7d926ff..81b703cfb081 100644 --- a/sys/contrib/dev/acpica/compiler/prscan.c +++ b/sys/contrib/dev/acpica/compiler/prscan.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -780,8 +780,9 @@ PrDoDirective ( TokenOffset = Token - AslGbl_MainTokenBuffer + strlen (Token); if (*(&AslGbl_CurrentLineBuffer[TokenOffset]) == '(') { -#ifndef MACROS_SUPPORTED - AcpiOsPrintf ( + +#ifdef MACROS_SUPPORTED + AcpiOsPrintf( "%s ERROR - line %u: #define macros are not supported yet\n", AslGbl_CurrentLineBuffer, AslGbl_LogicalLineNumber); exit(1); @@ -789,6 +790,8 @@ PrDoDirective ( PrAddMacro (Token, Next); #endif } + + else { /* Use the remainder of the line for the #define */ diff --git a/sys/contrib/dev/acpica/compiler/prutils.c b/sys/contrib/dev/acpica/compiler/prutils.c index 323bd6045885..902baed833c8 100644 --- a/sys/contrib/dev/acpica/compiler/prutils.c +++ b/sys/contrib/dev/acpica/compiler/prutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -284,6 +284,262 @@ PrError ( /******************************************************************************* * + * FUNCTION: PrReplaceResizeSubstring + * + * PARAMETERS: Args - Struct containing name, offset & usecount + * Diff1 - Difference in lengths when new < old + * Diff2 - Difference in lengths when new > old +* i - The curr. no. of iteration of replacement + * Token - Substring that replaces Args->Name + * + * RETURN: None + * + * DESCRIPTION: Advanced substring replacement in a string using resized buffer. + * + ******************************************************************************/ + +void +PrReplaceResizeSubstring( + PR_MACRO_ARG *Args, + UINT32 Diff1, + UINT32 Diff2, + UINT32 i, + char *Token) +{ + UINT32 b, PrevOffset; + char *temp; + char macro_sep[64]; + + + AslGbl_MacroTokenReplaceBuffer = (char *) realloc (AslGbl_MacroTokenReplaceBuffer, + (2 * (strlen (AslGbl_MacroTokenBuffer)))); + + strcpy (macro_sep, "~,() {}!*/%+-<>=&^|\"\t\n"); + + /* + * When the replacement argument (during invocation) length + * < replaced parameter (in the macro function definition + * and its expansion) length + */ + if (Diff1 != 0) + { + /* + * We save the offset value to reset it after replacing each + * instance of each arg and setting the offset value to + * the start of the arg to be replaced since it changes + * with each iteration when arg length != token length + */ + PrevOffset = Args->Offset[i]; + temp = strstr (AslGbl_MacroTokenBuffer, Args->Name); + if (temp == NULL) + { + return; + } + +ResetHere1: + temp = strstr (temp, Args->Name); + if (temp == NULL) + { + return; + } + Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) - + strlen (temp); + if (Args->Offset[i] == 0) + { + goto JumpHere1; + } + if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) && + (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))]))) + { + Args->Offset[i] += 0; + } + else + { + temp += strlen (Args->Name); + goto ResetHere1; + } + + /* + * For now, we simply set the extra char positions (generated + * due to longer name replaced by shorter name) to whitespace + * chars so it will be ignored during compilation + */ +JumpHere1: + b = strlen (Token) + Args->Offset[i]; + memset (&AslGbl_MacroTokenBuffer[b], ' ', Diff1); + +# if 0 + + /* Work in progress as of 03/08/2023 - experimental 'if' block + * to test code for removing extra whitespaces from the macro + * replacement when replacement arg < replaced param + */ + char Buff[8192]; + /* char* Replace; */ + /* Replace = Buff; */ + + for (j = 0; j < strlen (AslGbl_MacroTokenBuffer); j++) + { + Buff[j] = AslGbl_MacroTokenBuffer[j]; + } + Buff[strlen (AslGbl_MacroTokenBuffer)] = '\0'; + /* fprintf(stderr, "Buff: %s\n", Buff); */ + + UINT32 len = strlen (Buff); + + for (j = 0; j < len; j++) + { + if (Buff[0] == ' ') + { + for (j = 0; j < (len - 1); j++) + { + Buff[j] = Buff[j + 1]; + } + Buff[j] = '\0'; + len--; + j = -1; + continue; + } + + if (Buff[j] == ' ' && Buff[j + 1] == ' ') + { + for (k = 0; k < (len - 1); k++) + { + Buff[j] = Buff[j + 1]; + } + Buff[j] = '\0'; + len--; + j--; + } + } + /* fprintf(stderr, "Buff: %s\n", Buff); */ + + for (k = 0; k < strlen (Buff); k++) + { + AslGbl_MacroTokenBuffer[k] = Buff[k]; + } +#endif + + PrReplaceData ( + &AslGbl_MacroTokenBuffer[Args->Offset[i]], + strlen (Token), Token, strlen (Token)); + + temp = NULL; + Args->Offset[i] = PrevOffset; + } + + /* + * When the replacement argument (during invocation) length + * > replaced parameter (in the macro function definition + * and its expansion) length + */ + else if (Diff2 != 0) + { + /* Doing the same thing with offset value as for prev case */ + + PrevOffset = Args->Offset[i]; + temp = strstr (AslGbl_MacroTokenBuffer, Args->Name); + if (temp == NULL) + { + return; + } + +ResetHere2: + temp = strstr (temp, Args->Name); + if (temp == NULL) + { + return; + } + Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) - + strlen (temp); + if (Args->Offset[i] == 0) + { + goto JumpHere2; + } + if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) && + (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))]))) + { + Args->Offset[i] += 0; + } + else + { + temp+= strlen (Args->Name); + goto ResetHere2; + } + + /* + * We will need to allocate some extra space in our buffer to + * accommodate the increase in the replacement string length + * over the shorter outgoing arg string and do the replacement + * at the correct offset value which is resetted every iteration + */ +JumpHere2: + memcpy (AslGbl_MacroTokenReplaceBuffer, AslGbl_MacroTokenBuffer, Args->Offset[i]); + strcat (AslGbl_MacroTokenReplaceBuffer, Token); + strcat (AslGbl_MacroTokenReplaceBuffer, (AslGbl_MacroTokenBuffer + + (Args->Offset[i] + strlen (Args->Name)))); + + strcpy (AslGbl_MacroTokenBuffer, AslGbl_MacroTokenReplaceBuffer); + + temp = NULL; + Args->Offset[i] = PrevOffset; + } + + /* + * When the replacement argument (during invocation) length = + * replaced parameter (in the macro function definition and + * its expansion) length + */ + else + { + + /* + * We still need to reset the offset for each iteration even when + * arg and param lengths are same since any macro func invocation + * could use various cases for each separate arg-param pair + */ + PrevOffset = Args->Offset[i]; + temp = strstr (AslGbl_MacroTokenBuffer, Args->Name); + if (temp == NULL) + { + return; + } + +ResetHere3: + temp = strstr (temp, Args->Name); + if (temp == NULL) + { + return; + } + Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) - + strlen (temp); + if (Args->Offset[i] == 0) + { + goto JumpHere3; + } + if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) && + (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))]))) + { + Args->Offset[i] += 0; + } + else + { + temp += strlen (Args->Name); + goto ResetHere3; + } + +JumpHere3: + PrReplaceData ( + &AslGbl_MacroTokenBuffer[Args->Offset[i]], + strlen (Args->Name), Token, strlen (Token)); + temp = NULL; + Args->Offset[i] = PrevOffset; + } +} + + +/******************************************************************************* + * * FUNCTION: PrReplaceData * * PARAMETERS: Buffer - Original(target) buffer pointer @@ -291,13 +547,13 @@ PrError ( * BufferToAdd - Data to be inserted into target buffer * LengthToAdd - Length of BufferToAdd * - * RETURN: None + * RETURN: Pointer to where the buffer is replaced with data * * DESCRIPTION: Generic buffer data replacement. * ******************************************************************************/ -void +char * PrReplaceData ( char *Buffer, UINT32 LengthToRemove, @@ -325,12 +581,14 @@ PrReplaceData ( } } + /* Now we can move in the new data */ if (LengthToAdd > 0) { memmove (Buffer, BufferToAdd, LengthToAdd); } + return (Buffer + LengthToAdd); } diff --git a/sys/contrib/dev/acpica/components/debugger/dbcmds.c b/sys/contrib/dev/acpica/components/debugger/dbcmds.c index 04eecb841ae6..17ec5f342618 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbcmds.c +++ b/sys/contrib/dev/acpica/components/debugger/dbcmds.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -157,7 +157,6 @@ #include <contrib/dev/acpica/include/acresrc.h> #include <contrib/dev/acpica/include/actables.h> - #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbcmds") @@ -1291,6 +1290,64 @@ AcpiDbDisplayResources ( } +/******************************************************************************* + * + * FUNCTION: AcpiDbGenerateGed + * + * PARAMETERS: GedArg - Raw GED number, ascii string + * + * RETURN: None + * + * DESCRIPTION: Simulate firing of a GED + * + ******************************************************************************/ + +void +AcpiDbGenerateInterrupt ( + char *GsivArg) +{ + UINT32 GsivNumber; + ACPI_GED_HANDLER_INFO *GedInfo = AcpiGbl_GedHandlerList; + + if (!GedInfo) { + AcpiOsPrintf ("No GED handling present\n"); + } + + GsivNumber = strtoul (GsivArg, NULL, 0); + + while (GedInfo) { + + if (GedInfo->IntId == GsivNumber) { + ACPI_OBJECT_LIST ArgList; + ACPI_OBJECT Arg0; + ACPI_HANDLE EvtHandle = GedInfo->EvtMethod; + ACPI_STATUS Status; + + AcpiOsPrintf ("Evaluate GED _EVT (GSIV=%d)\n", GsivNumber); + + if (!EvtHandle) { + AcpiOsPrintf ("Undefined _EVT method\n"); + return; + } + + Arg0.Integer.Type = ACPI_TYPE_INTEGER; + Arg0.Integer.Value = GsivNumber; + + ArgList.Count = 1; + ArgList.Pointer = &Arg0; + + Status = AcpiEvaluateObject (EvtHandle, NULL, &ArgList, NULL); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not evaluate _EVT\n"); + return; + } + + } + GedInfo = GedInfo->Next; + } +} + #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * diff --git a/sys/contrib/dev/acpica/components/debugger/dbconvert.c b/sys/contrib/dev/acpica/components/debugger/dbconvert.c index 6ad7e5983d7e..ed464e25bdbe 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbconvert.c +++ b/sys/contrib/dev/acpica/components/debugger/dbconvert.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -354,6 +354,8 @@ AcpiDbConvertToPackage ( Elements = ACPI_ALLOCATE_ZEROED ( DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT)); + if (!Elements) + return (AE_NO_MEMORY); This = String; for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) diff --git a/sys/contrib/dev/acpica/components/debugger/dbdisply.c b/sys/contrib/dev/acpica/components/debugger/dbdisply.c index b0fe0cd8072b..c57a19d0dbdb 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbdisply.c +++ b/sys/contrib/dev/acpica/components/debugger/dbdisply.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbexec.c b/sys/contrib/dev/acpica/components/debugger/dbexec.c index 05aecc3083d7..38c7496ebba1 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbexec.c +++ b/sys/contrib/dev/acpica/components/debugger/dbexec.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbfileio.c b/sys/contrib/dev/acpica/components/debugger/dbfileio.c index 49067168fac4..b006ac9d330b 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbfileio.c +++ b/sys/contrib/dev/acpica/components/debugger/dbfileio.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbhistry.c b/sys/contrib/dev/acpica/components/debugger/dbhistry.c index 74922c2d6d18..45d44d11f315 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbhistry.c +++ b/sys/contrib/dev/acpica/components/debugger/dbhistry.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbinput.c b/sys/contrib/dev/acpica/components/debugger/dbinput.c index 03981ec5c256..e38364448885 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbinput.c +++ b/sys/contrib/dev/acpica/components/debugger/dbinput.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -264,6 +264,7 @@ enum AcpiExDebuggerCommands CMD_THREADS, CMD_TEST, + CMD_INTERRUPT, #endif }; @@ -345,6 +346,7 @@ static const ACPI_DB_COMMAND_INFO AcpiGbl_DbCommands[] = {"THREADS", 3}, {"TEST", 1}, + {"INTERRUPT", 1}, #endif {NULL, 0} }; @@ -461,6 +463,7 @@ static const ACPI_DB_COMMAND_HELP AcpiGbl_DbCommandHelp[] = {1, " Gpes", "Display info on all GPE devices\n"}, {1, " Sci", "Generate an SCI\n"}, {1, " Sleep [SleepState]", "Simulate sleep/wake sequence(s) (0-5)\n"}, + {1, " Interrupt <GSIV>", "Simulate an interrupt\n"}, #endif {0, NULL, NULL} }; @@ -1263,6 +1266,11 @@ AcpiDbCommandDispatch ( AcpiOsPrintf ("Event command not implemented\n"); break; + case CMD_INTERRUPT: + + AcpiDbGenerateInterrupt (AcpiGbl_DbArgs[1]); + break; + case CMD_GPE: AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); diff --git a/sys/contrib/dev/acpica/components/debugger/dbmethod.c b/sys/contrib/dev/acpica/components/debugger/dbmethod.c index e53901ef3e37..27e572d5ad17 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbmethod.c +++ b/sys/contrib/dev/acpica/components/debugger/dbmethod.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbnames.c b/sys/contrib/dev/acpica/components/debugger/dbnames.c index 410eb139dd62..fc6a26fe9cdc 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbnames.c +++ b/sys/contrib/dev/acpica/components/debugger/dbnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -774,7 +774,12 @@ AcpiDbWalkForFields ( ACPI_FREE (Buffer.Pointer); Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer); + Status = AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could Not evaluate object %p\n", ObjHandle); + return (AE_OK); + } /* * Since this is a field unit, surround the output in braces @@ -884,6 +889,9 @@ AcpiDbDisplayObjects ( { ObjectInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_OBJECT_INFO)); + if (!ObjectInfo) + return (AE_NO_MEMORY); + /* Walk the namespace from the root */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, diff --git a/sys/contrib/dev/acpica/components/debugger/dbobject.c b/sys/contrib/dev/acpica/components/debugger/dbobject.c index bd60776e05ea..0033b61ccab8 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbobject.c +++ b/sys/contrib/dev/acpica/components/debugger/dbobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbstats.c b/sys/contrib/dev/acpica/components/debugger/dbstats.c index 9c32ab631bdc..76295cadd337 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbstats.c +++ b/sys/contrib/dev/acpica/components/debugger/dbstats.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbtest.c b/sys/contrib/dev/acpica/components/debugger/dbtest.c index 960ad65b8c10..4e0eb486c35b 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbtest.c +++ b/sys/contrib/dev/acpica/components/debugger/dbtest.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbutils.c b/sys/contrib/dev/acpica/components/debugger/dbutils.c index a98a3a61eeb9..4a39f9aca9e0 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbutils.c +++ b/sys/contrib/dev/acpica/components/debugger/dbutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/debugger/dbxface.c b/sys/contrib/dev/acpica/components/debugger/dbxface.c index 4b932629db2b..2150abc16100 100644 --- a/sys/contrib/dev/acpica/components/debugger/dbxface.c +++ b/sys/contrib/dev/acpica/components/debugger/dbxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c index 02571b019ff0..d9e2273712e5 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c b/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c index 65b598569596..ce3aa09084df 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c index e99813ba952a..3826f194d6fd 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmnames.c b/sys/contrib/dev/acpica/components/disassembler/dmnames.c index 674870b2bb22..447618b5bc52 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmnames.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c index 439af75769dc..1cb1c81d74eb 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c index 421e45a70dee..e5a859ed47b7 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -203,6 +203,7 @@ static ACPI_RESOURCE_HANDLER AcpiGbl_DmResourceDispatch [] = AcpiDmPinGroupDescriptor, /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */ AcpiDmPinGroupFunctionDescriptor, /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */ AcpiDmPinGroupConfigDescriptor, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */ + AcpiDmClockInputDescriptor, /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */ }; diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c index aa26b88e5f76..b50766bcdf20 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c index 83e1c1a48629..551cf8178d94 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -525,6 +525,46 @@ AcpiDmGpioDescriptor ( } } +void +AcpiDmClockInputDescriptor ( + ACPI_OP_WALK_INFO *Info, + AML_RESOURCE *Resource, + UINT32 Length, + UINT32 Level) +{ + char *DeviceName = NULL; + UINT8 *ResourceIndex = NULL; + AcpiDmIndent (Level); + + AcpiOsPrintf ("ClockInput ("); + + AcpiOsPrintf ("0x%8.8X, ", Resource->ClockInput.FrequencyNumerator); + + AcpiOsPrintf ("0x%4.4X, ", Resource->ClockInput.FrequencyDivisor); + + AcpiOsPrintf ("%s, ", + AcpiGbl_ClockInputScale [ACPI_EXTRACT_2BIT_FLAG (Resource->ClockInput.Flags, 1)]); + + AcpiOsPrintf ("%s, ", + AcpiGbl_ClockInputMode [ACPI_GET_1BIT_FLAG (Resource->ClockInput.Flags)]); + + if (Length > sizeof(Resource->ClockInput)) + { + DeviceName = ACPI_ADD_PTR (char, + Resource, sizeof(Resource->ClockInput)+1), + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); + + AcpiOsPrintf (", "); + ResourceIndex = ACPI_ADD_PTR (UINT8, + Resource, sizeof(Resource->ClockInput)), + + AcpiOsPrintf ("0x%2.2X", *ResourceIndex); + } + + AcpiOsPrintf (")\n"); + +} + /******************************************************************************* * * FUNCTION: AcpiDmPinFunctionDescriptor @@ -738,7 +778,7 @@ AcpiDmCsi2SerialBusDescriptor ( AcpiOsPrintf (" 0x%2.2X, 0x%2.2X,\n", Resource->Csi2SerialBus.TypeSpecificFlags & 0x03, - Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC); + (Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC) >> 2); /* ResourceSource is a required field */ diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c index 3f67a6f6e58c..1398462cecfc 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmutils.c b/sys/contrib/dev/acpica/components/disassembler/dmutils.c index fb04e8404e7a..41e26ee4b755 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmutils.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c index ae1ac5dd873d..36f6def2bba5 100644 --- a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c +++ b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -969,8 +969,6 @@ AcpiDmDescendingOp ( AcpiDmPredefinedDescription (Op->Asl.Parent); } - AcpiDmPredefinedDescription (Op->Asl.Parent); - AcpiOsPrintf ("\n"); AcpiDmIndent (Info->Level); AcpiOsPrintf ("{\n"); diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsargs.c b/sys/contrib/dev/acpica/components/dispatcher/dsargs.c index 5f2de2f52c87..4a60cde8a15a 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsargs.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsargs.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c index 946d8daa1ce8..fcf10cf4e856 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsdebug.c b/sys/contrib/dev/acpica/components/dispatcher/dsdebug.c index 662318ea2bcd..feb7f58a95de 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsdebug.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c index 730616ac2951..baa6a2eef262 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c index bd096b1451cd..bcf2d4f112c8 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c b/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c index 1fe1983c476f..becdb95f8b83 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -646,8 +646,6 @@ AcpiDsCallControlMethod ( ACPI_WALK_STATE *NextWalkState = NULL; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_EVALUATE_INFO *Info; - UINT32 i; - ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); @@ -670,6 +668,23 @@ AcpiDsCallControlMethod ( return_ACPI_STATUS (AE_NULL_OBJECT); } + if (ThisWalkState->NumOperands < ObjDesc->Method.ParamCount) + { + ACPI_ERROR ((AE_INFO, "Missing argument(s) for method [%4.4s]", + AcpiUtGetNodeName (MethodNode))); + + return_ACPI_STATUS (AE_AML_TOO_FEW_ARGUMENTS); + } + + else if (ThisWalkState->NumOperands > ObjDesc->Method.ParamCount) + { + ACPI_ERROR ((AE_INFO, "Too many arguments for method [%4.4s]", + AcpiUtGetNodeName (MethodNode))); + + return_ACPI_STATUS (AE_AML_TOO_MANY_ARGUMENTS); + } + + /* Init for new method, possibly wait on method mutex */ Status = AcpiDsBeginMethodExecution ( @@ -705,7 +720,7 @@ AcpiDsCallControlMethod ( if (!Info) { Status = AE_NO_MEMORY; - goto Cleanup; + goto PopWalkState; } Info->Parameters = &ThisWalkState->Operands[0]; @@ -717,7 +732,7 @@ AcpiDsCallControlMethod ( ACPI_FREE (Info); if (ACPI_FAILURE (Status)) { - goto Cleanup; + goto PopWalkState; } NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1; @@ -726,15 +741,7 @@ AcpiDsCallControlMethod ( * Delete the operands on the previous walkstate operand stack * (they were copied to new objects) */ - for (i = 0; i < ObjDesc->Method.ParamCount; i++) - { - AcpiUtRemoveReference (ThisWalkState->Operands [i]); - ThisWalkState->Operands [i] = NULL; - } - - /* Clear the operand stack */ - - ThisWalkState->NumOperands = 0; + AcpiDsClearOperands (ThisWalkState); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "**** Begin nested execution of [%4.4s] **** WalkState=%p\n", @@ -764,6 +771,12 @@ AcpiDsCallControlMethod ( return_ACPI_STATUS (Status); +PopWalkState: + + /* On error, pop the walk state to be deleted from thread */ + + AcpiDsPopWalkState(Thread); + Cleanup: /* On error, we must terminate the method properly */ diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c b/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c index 0600012bc519..2c45e8c91f57 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -357,6 +357,7 @@ AcpiDsMethodDataInitArgs ( Index++; } + AcpiExTraceArgs(Params, Index); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n", Index)); return_ACPI_STATUS (AE_OK); diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c index e05ba16aeb25..cd9921e59261 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c b/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c index 0a1dc053ec59..23c7065bec5a 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c b/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c index 013c565c32dd..6365ab4b0f20 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c index 821b75d118d3..04b65326b51c 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -867,6 +867,8 @@ AcpiDsCreateOperands ( ACPI_PARSE_OBJECT *Arguments[ACPI_OBJ_NUM_OPERANDS]; UINT32 ArgCount = 0; UINT32 Index = WalkState->NumOperands; + UINT32 PrevNumOperands = WalkState->NumOperands; + UINT32 NewNumOperands; UINT32 i; @@ -899,6 +901,7 @@ AcpiDsCreateOperands ( /* Create the interpreter arguments, in reverse order */ + NewNumOperands = Index; Index--; for (i = 0; i < ArgCount; i++) { @@ -926,7 +929,11 @@ Cleanup: * pop everything off of the operand stack and delete those * objects */ - AcpiDsObjStackPopAndDelete (ArgCount, WalkState); + WalkState->NumOperands = (UINT8) (i); + AcpiDsObjStackPopAndDelete (NewNumOperands, WalkState); + + /* Restore operand count */ + WalkState->NumOperands = (UINT8) (PrevNumOperands); ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %u", Index)); return_ACPI_STATUS (Status); diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswexec.c b/sys/contrib/dev/acpica/components/dispatcher/dswexec.c index 9b1f1cb80eb0..1e287fae9977 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dswexec.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dswexec.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -569,9 +569,11 @@ AcpiDsExecEndOp ( /* * All opcodes require operand resolution, with the only exceptions - * being the ObjectType and SizeOf operators. + * being the ObjectType and SizeOf operators as well as opcodes that + * take no arguments. */ - if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE)) + if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE) && + (WalkState->OpInfo->Flags & AML_HAS_ARGS)) { /* Resolve all operands */ diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswload.c b/sys/contrib/dev/acpica/components/dispatcher/dswload.c index 81f7986b2d82..8c9969de14f7 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dswload.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dswload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswload2.c b/sys/contrib/dev/acpica/components/dispatcher/dswload2.c index 30f5d116a485..8ef7ff4090d1 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dswload2.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dswload2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswscope.c b/sys/contrib/dev/acpica/components/dispatcher/dswscope.c index 851f8472ca43..faf08bcfb399 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dswscope.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dswscope.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswstate.c b/sys/contrib/dev/acpica/components/dispatcher/dswstate.c index 7089694890f2..f353951961b2 100644 --- a/sys/contrib/dev/acpica/components/dispatcher/dswstate.c +++ b/sys/contrib/dev/acpica/components/dispatcher/dswstate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -310,8 +310,8 @@ AcpiDsResultPush ( if (!Object) { ACPI_ERROR ((AE_INFO, - "Null Object! Obj=%p State=%p Num=%u", - Object, WalkState, WalkState->ResultCount)); + "Null Object! State=%p Num=%u", + WalkState, WalkState->ResultCount)); return (AE_BAD_PARAMETER); } @@ -785,9 +785,14 @@ AcpiDsInitAmlWalk ( WalkState->ParserState.Aml = - WalkState->ParserState.AmlStart = AmlStart; + WalkState->ParserState.AmlStart = WalkState->ParserState.AmlEnd = - WalkState->ParserState.PkgEnd = AmlStart + AmlLength; + WalkState->ParserState.PkgEnd = AmlStart; + /* Avoid undefined behavior: applying zero offset to null pointer */ + if (AmlLength != 0) { + WalkState->ParserState.AmlEnd += AmlLength; + WalkState->ParserState.PkgEnd += AmlLength; + } /* The NextOp of the NextWalk will be the beginning of the method */ diff --git a/sys/contrib/dev/acpica/components/events/evevent.c b/sys/contrib/dev/acpica/components/events/evevent.c index e230ceff01e1..da5e633e5909 100644 --- a/sys/contrib/dev/acpica/components/events/evevent.c +++ b/sys/contrib/dev/acpica/components/events/evevent.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evglock.c b/sys/contrib/dev/acpica/components/events/evglock.c index 99869b49ce6e..395ca14fb315 100644 --- a/sys/contrib/dev/acpica/components/events/evglock.c +++ b/sys/contrib/dev/acpica/components/events/evglock.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -195,6 +195,11 @@ AcpiEvInitGlobalLockHandler ( return_ACPI_STATUS (AE_OK); } + if (!AcpiGbl_UseGlobalLock) + { + return_ACPI_STATUS (AE_OK); + } + /* Attempt installation of the global lock handler */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, diff --git a/sys/contrib/dev/acpica/components/events/evgpe.c b/sys/contrib/dev/acpica/components/events/evgpe.c index 90fa88c16b62..2ce159c46be2 100644 --- a/sys/contrib/dev/acpica/components/events/evgpe.c +++ b/sys/contrib/dev/acpica/components/events/evgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evgpeblk.c b/sys/contrib/dev/acpica/components/events/evgpeblk.c index 0d93307871a7..d30f31c641a1 100644 --- a/sys/contrib/dev/acpica/components/events/evgpeblk.c +++ b/sys/contrib/dev/acpica/components/events/evgpeblk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evgpeinit.c b/sys/contrib/dev/acpica/components/events/evgpeinit.c index 9e7ef53b65de..0ae8bb700369 100644 --- a/sys/contrib/dev/acpica/components/events/evgpeinit.c +++ b/sys/contrib/dev/acpica/components/events/evgpeinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -564,6 +564,7 @@ AcpiEvMatchGpeMethod ( GpeEventInfo->Flags &= ~(ACPI_GPE_DISPATCH_MASK); GpeEventInfo->Flags |= (UINT8) (Type | ACPI_GPE_DISPATCH_METHOD); GpeEventInfo->Dispatch.MethodNode = MethodNode; + WalkInfo->Count++; ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Registered GPE method %s as GPE number 0x%.2X\n", diff --git a/sys/contrib/dev/acpica/components/events/evgpeutil.c b/sys/contrib/dev/acpica/components/events/evgpeutil.c index e667cb03547d..0dc2fdf01b52 100644 --- a/sys/contrib/dev/acpica/components/events/evgpeutil.c +++ b/sys/contrib/dev/acpica/components/events/evgpeutil.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evhandler.c b/sys/contrib/dev/acpica/components/events/evhandler.c index 03cfcf81d65f..9c69d69b524a 100644 --- a/sys/contrib/dev/acpica/components/events/evhandler.c +++ b/sys/contrib/dev/acpica/components/events/evhandler.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evmisc.c b/sys/contrib/dev/acpica/components/events/evmisc.c index 399ff1b864b3..1b8688dd872d 100644 --- a/sys/contrib/dev/acpica/components/events/evmisc.c +++ b/sys/contrib/dev/acpica/components/events/evmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evregion.c b/sys/contrib/dev/acpica/components/events/evregion.c index 5ce29c95881a..385ac1845da1 100644 --- a/sys/contrib/dev/acpica/components/events/evregion.c +++ b/sys/contrib/dev/acpica/components/events/evregion.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -329,6 +329,14 @@ AcpiEvAddressSpaceDispatch ( Ctx->SubspaceId = (UINT8) RegionObj->Region.Address; } + if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE) + { + ACPI_FFH_INFO *Ctx = HandlerDesc->AddressSpace.Context; + + Ctx->Length = RegionObj->Region.Length; + Ctx->Offset = RegionObj->Region.Address; + } + /* * We must exit the interpreter because the region setup will * potentially execute control methods (for example, the _REG method diff --git a/sys/contrib/dev/acpica/components/events/evrgnini.c b/sys/contrib/dev/acpica/components/events/evrgnini.c index 4797fa1f45ba..1f16655195e1 100644 --- a/sys/contrib/dev/acpica/components/events/evrgnini.c +++ b/sys/contrib/dev/acpica/components/events/evrgnini.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evsci.c b/sys/contrib/dev/acpica/components/events/evsci.c index 4ea125b4f1d6..cd1dc4da6317 100644 --- a/sys/contrib/dev/acpica/components/events/evsci.c +++ b/sys/contrib/dev/acpica/components/events/evsci.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evxface.c b/sys/contrib/dev/acpica/components/events/evxface.c index 04c7ad85369e..54634c61e517 100644 --- a/sys/contrib/dev/acpica/components/events/evxface.c +++ b/sys/contrib/dev/acpica/components/events/evxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evxfevnt.c b/sys/contrib/dev/acpica/components/events/evxfevnt.c index eda4dee711ce..60837084e86f 100644 --- a/sys/contrib/dev/acpica/components/events/evxfevnt.c +++ b/sys/contrib/dev/acpica/components/events/evxfevnt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/events/evxfgpe.c b/sys/contrib/dev/acpica/components/events/evxfgpe.c index fca21acacbcb..1ffcff259a2b 100644 --- a/sys/contrib/dev/acpica/components/events/evxfgpe.c +++ b/sys/contrib/dev/acpica/components/events/evxfgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -636,7 +636,7 @@ AcpiSetupGpeForWake ( * permanently enabled and clear its ACPI_GPE_AUTO_ENABLED flag. */ (void) AcpiEvRemoveGpeReference (GpeEventInfo); - GpeEventInfo->Flags &= ~~ACPI_GPE_AUTO_ENABLED; + GpeEventInfo->Flags &= ~ACPI_GPE_AUTO_ENABLED; } /* diff --git a/sys/contrib/dev/acpica/components/events/evxfregn.c b/sys/contrib/dev/acpica/components/events/evxfregn.c index d2b84e1f1c5f..bbdf4352b415 100644 --- a/sys/contrib/dev/acpica/components/events/evxfregn.c +++ b/sys/contrib/dev/acpica/components/events/evxfregn.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -163,13 +163,14 @@ /******************************************************************************* * - * FUNCTION: AcpiInstallAddressSpaceHandler + * FUNCTION: AcpiInstallAddressSpaceHandlerInternal * * PARAMETERS: Device - Handle for the device * SpaceId - The address space ID * Handler - Address of the handler * Setup - Address of the setup function * Context - Value passed to the handler on each access + * Run_Reg - Run _REG methods for this address space? * * RETURN: Status * @@ -180,16 +181,19 @@ * are executed here, and these methods can only be safely executed after * the default handlers have been installed and the hardware has been * initialized (via AcpiEnableSubsystem.) + * To avoid this problem pass FALSE for Run_Reg and later on call + * AcpiExecuteRegMethods() to execute _REG. * ******************************************************************************/ -ACPI_STATUS -AcpiInstallAddressSpaceHandler ( +static ACPI_STATUS +AcpiInstallAddressSpaceHandlerInternal ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler, ACPI_ADR_SPACE_SETUP Setup, - void *Context) + void *Context, + BOOLEAN Run_Reg) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; @@ -231,16 +235,42 @@ AcpiInstallAddressSpaceHandler ( /* Run all _REG methods for this address space */ - AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); - + if (Run_Reg) + { + AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); + } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } +ACPI_STATUS +AcpiInstallAddressSpaceHandler ( + ACPI_HANDLE Device, + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler, + ACPI_ADR_SPACE_SETUP Setup, + void *Context) +{ + return AcpiInstallAddressSpaceHandlerInternal (Device, SpaceId, Handler, Setup, Context, TRUE); +} + ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandler) +ACPI_STATUS +AcpiInstallAddressSpaceHandlerNo_Reg ( + ACPI_HANDLE Device, + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler, + ACPI_ADR_SPACE_SETUP Setup, + void *Context) +{ + return AcpiInstallAddressSpaceHandlerInternal (Device, SpaceId, Handler, Setup, Context, FALSE); +} + +ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandlerNo_Reg) + /******************************************************************************* * @@ -362,7 +392,6 @@ AcpiRemoveAddressSpaceHandler ( /* Now we can delete the handler object */ - AcpiOsReleaseMutex (HandlerObj->AddressSpace.ContextMutex); AcpiUtRemoveReference (HandlerObj); goto UnlockAndExit; } @@ -387,3 +416,62 @@ UnlockAndExit: } ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler) + + +/******************************************************************************* + * + * FUNCTION: AcpiExecuteRegMethods + * + * PARAMETERS: Device - Handle for the device + * SpaceId - The address space ID + * + * RETURN: Status + * + * DESCRIPTION: Execute _REG for all OpRegions of a given SpaceId. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiExecuteRegMethods ( + ACPI_HANDLE Device, + ACPI_ADR_SPACE_TYPE SpaceId) +{ + ACPI_NAMESPACE_NODE *Node; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (AcpiExecuteRegMethods); + + + /* Parameter validation */ + + if (!Device) + { + return_ACPI_STATUS (AE_BAD_PARAMETER); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Convert and validate the device handle */ + + Node = AcpiNsValidateHandle (Device); + if (Node) + { + /* Run all _REG methods for this address space */ + + AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); + } + else + { + Status = AE_BAD_PARAMETER; + } + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + return_ACPI_STATUS (Status); +} + +ACPI_EXPORT_SYMBOL (AcpiExecuteRegMethods) diff --git a/sys/contrib/dev/acpica/components/executer/exconcat.c b/sys/contrib/dev/acpica/components/executer/exconcat.c index 6cd32ed38689..060dbf946d87 100644 --- a/sys/contrib/dev/acpica/components/executer/exconcat.c +++ b/sys/contrib/dev/acpica/components/executer/exconcat.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exconfig.c b/sys/contrib/dev/acpica/components/executer/exconfig.c index 9ace33cf3c17..6f3f8d24baca 100644 --- a/sys/contrib/dev/acpica/components/executer/exconfig.c +++ b/sys/contrib/dev/acpica/components/executer/exconfig.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exconvrt.c b/sys/contrib/dev/acpica/components/executer/exconvrt.c index 039c73d3a0fe..9c091864d7ef 100644 --- a/sys/contrib/dev/acpica/components/executer/exconvrt.c +++ b/sys/contrib/dev/acpica/components/executer/exconvrt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -165,7 +165,8 @@ AcpiExConvertToAscii ( UINT64 Integer, UINT16 Base, UINT8 *String, - UINT8 MaxLength); + UINT8 MaxLength, + BOOLEAN LeadingZeros); /******************************************************************************* @@ -387,7 +388,7 @@ AcpiExConvertToBuffer ( /* Copy the string to the buffer */ NewBuf = ReturnDesc->Buffer.Pointer; - strncpy ((char *) NewBuf, (char *) ObjDesc->String.Pointer, + memcpy ((char *) NewBuf, (char *) ObjDesc->String.Pointer, ObjDesc->String.Length); break; @@ -412,6 +413,7 @@ AcpiExConvertToBuffer ( * Base - ACPI_STRING_DECIMAL or ACPI_STRING_HEX * String - Where the string is returned * DataWidth - Size of data item to be converted, in bytes + * LeadingZeros - Allow leading zeros * * RETURN: Actual string length * @@ -424,7 +426,8 @@ AcpiExConvertToAscii ( UINT64 Integer, UINT16 Base, UINT8 *String, - UINT8 DataWidth) + UINT8 DataWidth, + BOOLEAN LeadingZeros) { UINT64 Digit; UINT32 i; @@ -433,7 +436,8 @@ AcpiExConvertToAscii ( UINT32 HexLength; UINT32 DecimalLength; UINT32 Remainder; - BOOLEAN SupressZeros; + BOOLEAN SupressZeros = !LeadingZeros; + UINT8 HexChar; ACPI_FUNCTION_ENTRY (); @@ -464,7 +468,6 @@ AcpiExConvertToAscii ( break; } - SupressZeros = TRUE; /* No leading zeros */ Remainder = 0; for (i = DecimalLength; i > 0; i--) @@ -501,8 +504,18 @@ AcpiExConvertToAscii ( { /* Get one hex digit, most significant digits first */ - String[k] = (UINT8) + HexChar = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); + + /* Supress leading zeros until the first non-zero character */ + + if (HexChar == ACPI_ASCII_ZERO && SupressZeros) + { + continue; + } + + SupressZeros = FALSE; + String[k] = HexChar; k++; } break; @@ -556,6 +569,7 @@ AcpiExConvertToString ( UINT32 StringLength = 0; UINT16 Base = 16; UINT8 Separator = ','; + BOOLEAN LeadingZeros; ACPI_FUNCTION_TRACE_PTR (ExConvertToString, ObjDesc); @@ -581,14 +595,25 @@ AcpiExConvertToString ( * Make room for the maximum decimal number size */ StringLength = ACPI_MAX_DECIMAL_DIGITS; + LeadingZeros = FALSE; Base = 10; break; + case ACPI_EXPLICIT_CONVERT_HEX: + /* + * From ToHexString. + * + * Supress leading zeros and append "0x" + */ + StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth) + 2; + LeadingZeros = FALSE; + break; default: /* Two hex string characters for each integer byte */ StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth); + LeadingZeros = TRUE; break; } @@ -603,15 +628,29 @@ AcpiExConvertToString ( } NewBuf = ReturnDesc->Buffer.Pointer; + if (Type == ACPI_EXPLICIT_CONVERT_HEX) + { + /* Append "0x" prefix for explicit hex conversion */ + + *NewBuf++ = '0'; + *NewBuf++ = 'x'; + } /* Convert integer to string */ StringLength = AcpiExConvertToAscii ( - ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth); + ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth, LeadingZeros); /* Null terminate at the correct place */ ReturnDesc->String.Length = StringLength; + if (Type == ACPI_EXPLICIT_CONVERT_HEX) + { + /* Take "0x" prefix into account */ + + ReturnDesc->String.Length += 2; + } + NewBuf [StringLength] = 0; break; @@ -628,6 +667,7 @@ AcpiExConvertToString ( * From ACPI: "If the input is a buffer, it is converted to a * a string of decimal values separated by commas." */ + LeadingZeros = FALSE; Base = 10; /* @@ -661,6 +701,7 @@ AcpiExConvertToString ( * * Each hex number is prefixed with 0x (11/2018) */ + LeadingZeros = TRUE; Separator = ' '; StringLength = (ObjDesc->Buffer.Length * 5); break; @@ -674,6 +715,7 @@ AcpiExConvertToString ( * * Each hex number is prefixed with 0x (11/2018) */ + LeadingZeros = TRUE; Separator = ','; StringLength = (ObjDesc->Buffer.Length * 5); break; @@ -715,7 +757,7 @@ AcpiExConvertToString ( } NewBuf += AcpiExConvertToAscii ( - (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1); + (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1, LeadingZeros); /* Each digit is separated by either a comma or space */ diff --git a/sys/contrib/dev/acpica/components/executer/excreate.c b/sys/contrib/dev/acpica/components/executer/excreate.c index d78d4ef00014..75f1d631d110 100644 --- a/sys/contrib/dev/acpica/components/executer/excreate.c +++ b/sys/contrib/dev/acpica/components/executer/excreate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exdebug.c b/sys/contrib/dev/acpica/components/executer/exdebug.c index b4bd44d7b1ee..6a927eb26393 100644 --- a/sys/contrib/dev/acpica/components/executer/exdebug.c +++ b/sys/contrib/dev/acpica/components/executer/exdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exdump.c b/sys/contrib/dev/acpica/components/executer/exdump.c index 2135e66fd16d..581d183d919f 100644 --- a/sys/contrib/dev/acpica/components/executer/exdump.c +++ b/sys/contrib/dev/acpica/components/executer/exdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exfield.c b/sys/contrib/dev/acpica/components/executer/exfield.c index 6ed3d40b6035..6c27e7dfcb36 100644 --- a/sys/contrib/dev/acpica/components/executer/exfield.c +++ b/sys/contrib/dev/acpica/components/executer/exfield.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -296,7 +296,8 @@ AcpiExReadDataFromField ( (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)) { /* SMBus, GSBus, IPMI serial */ @@ -469,7 +470,8 @@ AcpiExWriteDataToField ( (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)) { /* SMBus, GSBus, IPMI serial */ diff --git a/sys/contrib/dev/acpica/components/executer/exfldio.c b/sys/contrib/dev/acpica/components/executer/exfldio.c index faee3bce1e6b..b3d1d73c0960 100644 --- a/sys/contrib/dev/acpica/components/executer/exfldio.c +++ b/sys/contrib/dev/acpica/components/executer/exfldio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exmisc.c b/sys/contrib/dev/acpica/components/executer/exmisc.c index e112af6e2f68..9b9b6b3005c2 100644 --- a/sys/contrib/dev/acpica/components/executer/exmisc.c +++ b/sys/contrib/dev/acpica/components/executer/exmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exmutex.c b/sys/contrib/dev/acpica/components/executer/exmutex.c index 27474c0e4707..fe1220d6abfb 100644 --- a/sys/contrib/dev/acpica/components/executer/exmutex.c +++ b/sys/contrib/dev/acpica/components/executer/exmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exnames.c b/sys/contrib/dev/acpica/components/executer/exnames.c index ab4908a5410e..105103f81f11 100644 --- a/sys/contrib/dev/acpica/components/executer/exnames.c +++ b/sys/contrib/dev/acpica/components/executer/exnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exoparg1.c b/sys/contrib/dev/acpica/components/executer/exoparg1.c index 0d794cc697fa..13af957693b4 100644 --- a/sys/contrib/dev/acpica/components/executer/exoparg1.c +++ b/sys/contrib/dev/acpica/components/executer/exoparg1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exoparg2.c b/sys/contrib/dev/acpica/components/executer/exoparg2.c index d9edd41a4c89..4bc3cf79e1eb 100644 --- a/sys/contrib/dev/acpica/components/executer/exoparg2.c +++ b/sys/contrib/dev/acpica/components/executer/exoparg2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exoparg3.c b/sys/contrib/dev/acpica/components/executer/exoparg3.c index f1c9b107fab1..7c17e2868132 100644 --- a/sys/contrib/dev/acpica/components/executer/exoparg3.c +++ b/sys/contrib/dev/acpica/components/executer/exoparg3.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exoparg6.c b/sys/contrib/dev/acpica/components/executer/exoparg6.c index 0a182f4ce0e4..a9092ba2e4e2 100644 --- a/sys/contrib/dev/acpica/components/executer/exoparg6.c +++ b/sys/contrib/dev/acpica/components/executer/exoparg6.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exprep.c b/sys/contrib/dev/acpica/components/executer/exprep.c index 8caee66f6e05..dc04b77b7ea5 100644 --- a/sys/contrib/dev/acpica/components/executer/exprep.c +++ b/sys/contrib/dev/acpica/components/executer/exprep.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -611,6 +611,10 @@ AcpiExPrepFieldValue ( if (Info->ConnectionNode) { SecondDesc = Info->ConnectionNode->Object; + if (SecondDesc == NULL) + { + break; + } if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetBufferArguments (SecondDesc); diff --git a/sys/contrib/dev/acpica/components/executer/exregion.c b/sys/contrib/dev/acpica/components/executer/exregion.c index c657659f8e44..4e9f535ef9ac 100644 --- a/sys/contrib/dev/acpica/components/executer/exregion.c +++ b/sys/contrib/dev/acpica/components/executer/exregion.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -191,7 +191,6 @@ AcpiExSystemMemorySpaceHandler ( ACPI_MEM_MAPPING *Mm = MemInfo->CurMm; UINT32 Length; ACPI_SIZE MapLength; - ACPI_SIZE PageBoundaryMapLength; #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED UINT32 Remainder; #endif @@ -298,27 +297,9 @@ AcpiExSystemMemorySpaceHandler ( MapLength = (ACPI_SIZE) ((MemInfo->Address + MemInfo->Length) - Address); - /* - * If mapping the entire remaining portion of the region will cross - * a page boundary, just map up to the page boundary, do not cross. - * On some systems, crossing a page boundary while mapping regions - * can cause warnings if the pages have different attributes - * due to resource management. - * - * This has the added benefit of constraining a single mapping to - * one page, which is similar to the original code that used a 4k - * maximum window. - */ - PageBoundaryMapLength = (ACPI_SIZE) - (ACPI_ROUND_UP (Address, ACPI_DEFAULT_PAGE_SIZE) - Address); - if (PageBoundaryMapLength == 0) - { - PageBoundaryMapLength = ACPI_DEFAULT_PAGE_SIZE; - } - - if (MapLength > PageBoundaryMapLength) + if (MapLength > ACPI_DEFAULT_PAGE_SIZE) { - MapLength = PageBoundaryMapLength; + MapLength = ACPI_DEFAULT_PAGE_SIZE; } /* Create a new mapping starting at the address given */ diff --git a/sys/contrib/dev/acpica/components/executer/exresnte.c b/sys/contrib/dev/acpica/components/executer/exresnte.c index b2731527dfbe..0c66f0b4d4f8 100644 --- a/sys/contrib/dev/acpica/components/executer/exresnte.c +++ b/sys/contrib/dev/acpica/components/executer/exresnte.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exresolv.c b/sys/contrib/dev/acpica/components/executer/exresolv.c index 7c7a7e6787c5..81d934418983 100644 --- a/sys/contrib/dev/acpica/components/executer/exresolv.c +++ b/sys/contrib/dev/acpica/components/executer/exresolv.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exresop.c b/sys/contrib/dev/acpica/components/executer/exresop.c index f50e33a0b202..0a89bc78d3e3 100644 --- a/sys/contrib/dev/acpica/components/executer/exresop.c +++ b/sys/contrib/dev/acpica/components/executer/exresop.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exserial.c b/sys/contrib/dev/acpica/components/executer/exserial.c index fd6dea206450..6d17c29569e0 100644 --- a/sys/contrib/dev/acpica/components/executer/exserial.c +++ b/sys/contrib/dev/acpica/components/executer/exserial.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -359,6 +359,12 @@ AcpiExReadSerialBus ( Function = ACPI_READ; break; + case ACPI_ADR_SPACE_FIXED_HARDWARE: + + BufferLength = ACPI_FFH_INPUT_BUFFER_SIZE; + Function = ACPI_READ; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -484,6 +490,12 @@ AcpiExWriteSerialBus ( Function = ACPI_WRITE; break; + case ACPI_ADR_SPACE_FIXED_HARDWARE: + + BufferLength = ACPI_FFH_INPUT_BUFFER_SIZE; + Function = ACPI_WRITE; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -499,8 +511,7 @@ AcpiExWriteSerialBus ( /* Copy the input buffer data to the transfer buffer */ Buffer = BufferDesc->Buffer.Pointer; - DataLength = (BufferLength < SourceDesc->Buffer.Length ? - BufferLength : SourceDesc->Buffer.Length); + DataLength = ACPI_MIN (BufferLength, SourceDesc->Buffer.Length); memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength); /* Lock entire transaction if requested */ diff --git a/sys/contrib/dev/acpica/components/executer/exstore.c b/sys/contrib/dev/acpica/components/executer/exstore.c index 1052b3cc2c53..ebe767abd637 100644 --- a/sys/contrib/dev/acpica/components/executer/exstore.c +++ b/sys/contrib/dev/acpica/components/executer/exstore.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exstoren.c b/sys/contrib/dev/acpica/components/executer/exstoren.c index 3bbf620004af..ed9fa9a7f13b 100644 --- a/sys/contrib/dev/acpica/components/executer/exstoren.c +++ b/sys/contrib/dev/acpica/components/executer/exstoren.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exstorob.c b/sys/contrib/dev/acpica/components/executer/exstorob.c index 25a887ff60aa..e9ddabd6c25a 100644 --- a/sys/contrib/dev/acpica/components/executer/exstorob.c +++ b/sys/contrib/dev/acpica/components/executer/exstorob.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/executer/exsystem.c b/sys/contrib/dev/acpica/components/executer/exsystem.c index 0a48eeb174c8..f91d8d04b3ba 100644 --- a/sys/contrib/dev/acpica/components/executer/exsystem.c +++ b/sys/contrib/dev/acpica/components/executer/exsystem.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -296,17 +296,17 @@ AcpiExSystemDoStall ( * (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ - ACPI_ERROR ((AE_INFO, + ACPI_ERROR_ONCE ((AE_INFO, "Time parameter is too large (%u)", HowLongUs)); Status = AE_AML_OPERAND_VALUE; } else { if (HowLongUs > 100) - { - ACPI_WARNING ((AE_INFO, + { + ACPI_WARNING_ONCE ((AE_INFO, "Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.", HowLongUs)); - } + } AcpiOsStall (HowLongUs); } diff --git a/sys/contrib/dev/acpica/components/executer/extrace.c b/sys/contrib/dev/acpica/components/executer/extrace.c index 2184b5513b46..b48a5fcb289b 100644 --- a/sys/contrib/dev/acpica/components/executer/extrace.c +++ b/sys/contrib/dev/acpica/components/executer/extrace.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -269,6 +269,68 @@ AcpiExGetTraceEventName ( #endif +/******************************************************************************* + * + * FUNCTION: AcpiExTraceArgs + * + * PARAMETERS: Params - AML method arguments + * Count - numer of method arguments + * + * RETURN: None + * + * DESCRIPTION: Trace any arguments + * + ******************************************************************************/ + +void +AcpiExTraceArgs(ACPI_OPERAND_OBJECT **Params, UINT32 Count) +{ + UINT32 i; + + ACPI_FUNCTION_NAME(ExTraceArgs); + + for (i = 0; i < Count; i++) + { + ACPI_OPERAND_OBJECT *obj_desc = Params[i]; + + if (!i) + { + ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT, " ")); + } + + switch (obj_desc->Common.Type) + { + case ACPI_TYPE_INTEGER: + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "%jx", (uintmax_t)obj_desc->Integer.Value)); + break; + + case ACPI_TYPE_STRING: + if (!obj_desc->String.Length) + { + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "NULL")); + break; + } + if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_TRACE_POINT, _COMPONENT)) + { + AcpiUtPrintString(obj_desc->String.Pointer, ACPI_UINT8_MAX); + } + break; + + default: + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "Unknown")); + break; + } + + if ((i + 1) == Count) + { + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "\n")); + } + else + { + ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, ", ")); + } + } +} /******************************************************************************* * @@ -299,9 +361,9 @@ AcpiExTracePoint ( if (Pathname) { ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, - "%s %s [0x%p:%s] execution.\n", + "%s %s [%s] execution.\n", AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", - Aml, Pathname)); + Pathname)); } else { diff --git a/sys/contrib/dev/acpica/components/executer/exutils.c b/sys/contrib/dev/acpica/components/executer/exutils.c index 425cf6b0010a..995edbc5990e 100644 --- a/sys/contrib/dev/acpica/components/executer/exutils.c +++ b/sys/contrib/dev/acpica/components/executer/exutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwacpi.c b/sys/contrib/dev/acpica/components/hardware/hwacpi.c index 1cdab7cda39f..74cfecfcc2a2 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwacpi.c +++ b/sys/contrib/dev/acpica/components/hardware/hwacpi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwesleep.c b/sys/contrib/dev/acpica/components/hardware/hwesleep.c index 799a14e29150..329d8a20b4b7 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwesleep.c +++ b/sys/contrib/dev/acpica/components/hardware/hwesleep.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwgpe.c b/sys/contrib/dev/acpica/components/hardware/hwgpe.c index 6c371b4575de..681ca9a1b9de 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwgpe.c +++ b/sys/contrib/dev/acpica/components/hardware/hwgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwpci.c b/sys/contrib/dev/acpica/components/hardware/hwpci.c index 0d7585d2d04f..a9fc5cba2fff 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwpci.c +++ b/sys/contrib/dev/acpica/components/hardware/hwpci.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwregs.c b/sys/contrib/dev/acpica/components/hardware/hwregs.c index 1dfce0c9e04a..d0f47b874ead 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwregs.c +++ b/sys/contrib/dev/acpica/components/hardware/hwregs.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwsleep.c b/sys/contrib/dev/acpica/components/hardware/hwsleep.c index 3ca352cd5d26..210f4ea62dee 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwsleep.c +++ b/sys/contrib/dev/acpica/components/hardware/hwsleep.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwtimer.c b/sys/contrib/dev/acpica/components/hardware/hwtimer.c index 17dbbe84ecf4..9a9602e04232 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwtimer.c +++ b/sys/contrib/dev/acpica/components/hardware/hwtimer.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwvalid.c b/sys/contrib/dev/acpica/components/hardware/hwvalid.c index b4f90ba3df3a..5c4df25d2c38 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwvalid.c +++ b/sys/contrib/dev/acpica/components/hardware/hwvalid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -169,8 +169,8 @@ AcpiHwValidateIoRequest ( * * The table is used to implement the Microsoft port access rules that * first appeared in Windows XP. Some ports are always illegal, and some - * ports are only illegal if the BIOS calls _OSI with a WinXP string or - * later (meaning that the BIOS itelf is post-XP.) + * ports are only illegal if the BIOS calls _OSI with nothing newer than + * the specific _OSI strings. * * This provides ACPICA with the desired port protections and * Microsoft compatibility. @@ -301,8 +301,8 @@ AcpiHwValidateIoRequest ( if ((Address <= PortInfo->End) && (LastAddress >= PortInfo->Start)) { /* Port illegality may depend on the _OSI calls made by the BIOS */ - - if (AcpiGbl_OsiData >= PortInfo->OsiDependency) + if (PortInfo->OsiDependency == ACPI_ALWAYS_ILLEGAL || + AcpiGbl_OsiData == PortInfo->OsiDependency) { ACPI_DEBUG_PRINT ((ACPI_DB_VALUES, "Denied AML access to port 0x%8.8X%8.8X/%X (%s 0x%.4X-0x%.4X)\n", diff --git a/sys/contrib/dev/acpica/components/hardware/hwxface.c b/sys/contrib/dev/acpica/components/hardware/hwxface.c index 2001b6c33fbb..5f645617cbce 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwxface.c +++ b/sys/contrib/dev/acpica/components/hardware/hwxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c index 2ed5a3a89c7d..1d79e908cf08 100644 --- a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c +++ b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -159,13 +159,11 @@ /* Local prototypes */ -#if (!ACPI_REDUCED_HARDWARE) static ACPI_STATUS AcpiHwSetFirmwareWakingVector ( ACPI_TABLE_FACS *Facs, ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_PHYSICAL_ADDRESS PhysicalAddress64); -#endif static ACPI_STATUS AcpiHwSleepDispatch ( @@ -199,13 +197,6 @@ static ACPI_SLEEP_FUNCTIONS AcpiSleepDispatch[] = }; -/* - * These functions are removed for the ACPI_REDUCED_HARDWARE case: - * AcpiSetFirmwareWakingVector - * AcpiEnterSleepStateS4bios - */ - -#if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiHwSetFirmwareWakingVector @@ -298,6 +289,12 @@ AcpiSetFirmwareWakingVector ( ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector) +/* + * These functions are removed for the ACPI_REDUCED_HARDWARE case: + * AcpiEnterSleepStateS4bios + */ + +#if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiEnterSleepStateS4bios diff --git a/sys/contrib/dev/acpica/components/namespace/nsaccess.c b/sys/contrib/dev/acpica/components/namespace/nsaccess.c index 4a00dd702db5..35d30ded0a60 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsaccess.c +++ b/sys/contrib/dev/acpica/components/namespace/nsaccess.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -449,7 +449,9 @@ AcpiNsLookup ( ACPI_NAMESPACE_NODE *CurrentNode = NULL; ACPI_NAMESPACE_NODE *ThisNode = NULL; UINT32 NumSegments; +#ifdef ACPI_DEBUG_OUTPUT UINT32 NumCarats; +#endif ACPI_NAME SimpleName; ACPI_OBJECT_TYPE TypeToCheckFor; ACPI_OBJECT_TYPE ThisSearchType; @@ -573,7 +575,9 @@ AcpiNsLookup ( * the parent node for each prefix instance. */ ThisNode = PrefixNode; +#ifdef ACPI_DEBUG_OUTPUT NumCarats = 0; +#endif while (*Path == (UINT8) AML_PARENT_PREFIX) { /* Name is fully qualified, no search rules apply */ @@ -588,7 +592,9 @@ AcpiNsLookup ( /* Backup to the parent node */ +#ifdef ACPI_DEBUG_OUTPUT NumCarats++; +#endif ThisNode = ThisNode->Parent; if (!ThisNode) { @@ -611,12 +617,14 @@ AcpiNsLookup ( } } +#ifdef ACPI_DEBUG_OUTPUT if (SearchParentFlag == ACPI_NS_NO_UPSEARCH) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Search scope is [%4.4s], path has %u carat(s)\n", AcpiUtGetNodeName (ThisNode), NumCarats)); } +#endif } /* diff --git a/sys/contrib/dev/acpica/components/namespace/nsalloc.c b/sys/contrib/dev/acpica/components/namespace/nsalloc.c index a53c09fa3dc1..69d1d7fa053a 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsalloc.c +++ b/sys/contrib/dev/acpica/components/namespace/nsalloc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsarguments.c b/sys/contrib/dev/acpica/components/namespace/nsarguments.c index afa888e0c160..8916484053b9 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsarguments.c +++ b/sys/contrib/dev/acpica/components/namespace/nsarguments.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsconvert.c b/sys/contrib/dev/acpica/components/namespace/nsconvert.c index 047146589a06..ad4890b591a3 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsconvert.c +++ b/sys/contrib/dev/acpica/components/namespace/nsconvert.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsdump.c b/sys/contrib/dev/acpica/components/namespace/nsdump.c index 01480aac78a7..bf4aa1455075 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsdump.c +++ b/sys/contrib/dev/acpica/components/namespace/nsdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsdumpdv.c b/sys/contrib/dev/acpica/components/namespace/nsdumpdv.c index a0a5af3686e7..dc370a6e3018 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsdumpdv.c +++ b/sys/contrib/dev/acpica/components/namespace/nsdumpdv.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nseval.c b/sys/contrib/dev/acpica/components/namespace/nseval.c index ef642ebadfeb..765b270ad2a1 100644 --- a/sys/contrib/dev/acpica/components/namespace/nseval.c +++ b/sys/contrib/dev/acpica/components/namespace/nseval.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsinit.c b/sys/contrib/dev/acpica/components/namespace/nsinit.c index abfa6bc003af..ed37aee82502 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsinit.c +++ b/sys/contrib/dev/acpica/components/namespace/nsinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsload.c b/sys/contrib/dev/acpica/components/namespace/nsload.c index 1c92f3addd4a..bbd36a8a29a3 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsload.c +++ b/sys/contrib/dev/acpica/components/namespace/nsload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsnames.c b/sys/contrib/dev/acpica/components/namespace/nsnames.c index 578efeb93ab4..a5aa1139792d 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsnames.c +++ b/sys/contrib/dev/acpica/components/namespace/nsnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -368,7 +368,7 @@ AcpiNsBuildNormalizedPath ( BOOLEAN NoTrailing) { UINT32 Length = 0, i; - char Name[ACPI_NAMESEG_SIZE]; + char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; BOOLEAN DoNoTrailing; char c, *Left, *Right; ACPI_NAMESPACE_NODE *NextNode; diff --git a/sys/contrib/dev/acpica/components/namespace/nsobject.c b/sys/contrib/dev/acpica/components/namespace/nsobject.c index 5713922d5d7e..fd6f0a524699 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsobject.c +++ b/sys/contrib/dev/acpica/components/namespace/nsobject.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsparse.c b/sys/contrib/dev/acpica/components/namespace/nsparse.c index 098a59e8e35a..c5d35bac831c 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsparse.c +++ b/sys/contrib/dev/acpica/components/namespace/nsparse.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nspredef.c b/sys/contrib/dev/acpica/components/namespace/nspredef.c index 386f6835859b..5bb5d5bf67ca 100644 --- a/sys/contrib/dev/acpica/components/namespace/nspredef.c +++ b/sys/contrib/dev/acpica/components/namespace/nspredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsprepkg.c b/sys/contrib/dev/acpica/components/namespace/nsprepkg.c index 3405e160328c..6fced55328bf 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsprepkg.c +++ b/sys/contrib/dev/acpica/components/namespace/nsprepkg.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair.c b/sys/contrib/dev/acpica/components/namespace/nsrepair.c index fe722a0cb79e..8d0e86932e1d 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsrepair.c +++ b/sys/contrib/dev/acpica/components/namespace/nsrepair.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -328,9 +328,10 @@ AcpiNsSimpleRepair ( */ if (!ReturnObject) { - if (ExpectedBtypes && (!(ExpectedBtypes & ACPI_RTYPE_NONE))) + if (ExpectedBtypes) { - if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) + if (!(ExpectedBtypes & ACPI_RTYPE_NONE) && + PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Found unexpected NULL package element")); @@ -342,13 +343,14 @@ AcpiNsSimpleRepair ( return (AE_OK); /* Repair was successful */ } } - else + + if (ExpectedBtypes != ACPI_RTYPE_NONE) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, - ACPI_WARN_ALWAYS, "Missing expected return value")); + ACPI_WARN_ALWAYS, + "Missing expected return value")); + return (AE_AML_NO_RETURN_VALUE); } - - return (AE_AML_NO_RETURN_VALUE); } } diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c index 62df8b00da2c..0dddebda980b 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c +++ b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -169,7 +169,7 @@ ACPI_STATUS (*ACPI_REPAIR_FUNCTION) ( typedef struct acpi_repair_info { - char Name[ACPI_NAMESEG_SIZE]; + char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; ACPI_REPAIR_FUNCTION RepairFunction; } ACPI_REPAIR_INFO; @@ -565,13 +565,6 @@ AcpiNsRepair_CID ( (*ElementPtr)->Common.ReferenceCount = OriginalRefCount; - - /* - * The OriginalElement holds a reference from the package object - * that represents _HID. Since a new element was created by _HID, - * remove the reference from the _CID package. - */ - AcpiUtRemoveReference (OriginalElement); } ElementPtr++; @@ -702,7 +695,7 @@ AcpiNsRepair_HID ( char *Dest; - ACPI_FUNCTION_NAME (NsRepair_HID); + ACPI_FUNCTION_TRACE (NsRepair_HID); /* We only care about string _HID objects (not integers) */ diff --git a/sys/contrib/dev/acpica/components/namespace/nssearch.c b/sys/contrib/dev/acpica/components/namespace/nssearch.c index 8b953c033fe6..d956358e8e35 100644 --- a/sys/contrib/dev/acpica/components/namespace/nssearch.c +++ b/sys/contrib/dev/acpica/components/namespace/nssearch.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsutils.c b/sys/contrib/dev/acpica/components/namespace/nsutils.c index 67f2a512fcdd..bf400ed2370d 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsutils.c +++ b/sys/contrib/dev/acpica/components/namespace/nsutils.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -500,7 +500,7 @@ AcpiNsBuildInternalName ( * * PARAMETERS: *ExternalName - External representation of name * **Converted Name - Where to return the resulting - * internal represention of the name + * internal representation of the name * * RETURN: Status * diff --git a/sys/contrib/dev/acpica/components/namespace/nswalk.c b/sys/contrib/dev/acpica/components/namespace/nswalk.c index f458a8693b07..f3c37d7ac231 100644 --- a/sys/contrib/dev/acpica/components/namespace/nswalk.c +++ b/sys/contrib/dev/acpica/components/namespace/nswalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c index 6c6b567c5886..f6a1ead7ddd5 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c +++ b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfname.c b/sys/contrib/dev/acpica/components/namespace/nsxfname.c index 4dfef3e5f429..706bb36a4f84 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsxfname.c +++ b/sys/contrib/dev/acpica/components/namespace/nsxfname.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -192,7 +192,7 @@ AcpiNsCopyDeviceId ( ACPI_STATUS AcpiGetHandle ( ACPI_HANDLE Parent, - ACPI_STRING Pathname, + const char *Pathname, ACPI_HANDLE *RetHandle) { ACPI_STATUS Status; diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfobj.c b/sys/contrib/dev/acpica/components/namespace/nsxfobj.c index a01d7a7acac4..ea0654285a90 100644 --- a/sys/contrib/dev/acpica/components/namespace/nsxfobj.c +++ b/sys/contrib/dev/acpica/components/namespace/nsxfobj.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/psargs.c b/sys/contrib/dev/acpica/components/parser/psargs.c index 8606fbdd9cf0..d9110c09fcb5 100644 --- a/sys/contrib/dev/acpica/components/parser/psargs.c +++ b/sys/contrib/dev/acpica/components/parser/psargs.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -170,6 +170,10 @@ static ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState); +static void +AcpiPsFreeFieldList ( + ACPI_PARSE_OBJECT *Start); + /******************************************************************************* * @@ -872,6 +876,43 @@ AcpiPsGetNextField ( return_PTR (Field); } +/******************************************************************************* + * + * FUNCTION: AcpiPsFreeFieldList + * + * PARAMETERS: Start - First Op in field list + * + * RETURN: None. + * + * DESCRIPTION: Free all Op objects inside a field list. + * + ******************************************************************************/ + +static void +AcpiPsFreeFieldList ( + ACPI_PARSE_OBJECT *Start) +{ + ACPI_PARSE_OBJECT *Current = Start; + ACPI_PARSE_OBJECT *Next; + ACPI_PARSE_OBJECT *Arg; + + while (Current) + { + Next = Current->Common.Next; + + /* AML_INT_CONNECTION_OP can have a single argument */ + + Arg = AcpiPsGetArg (Current, 0); + if (Arg) + { + AcpiPsFreeOp (Arg); + } + + AcpiPsFreeOp(Current); + Current = Next; + } +} + /******************************************************************************* * @@ -948,6 +989,11 @@ AcpiPsGetNextArg ( Field = AcpiPsGetNextField (ParserState); if (!Field) { + if (Arg) + { + AcpiPsFreeFieldList(Arg); + } + return_ACPI_STATUS (AE_NO_MEMORY); } @@ -1016,6 +1062,11 @@ AcpiPsGetNextArg ( Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, ACPI_NOT_METHOD_CALL); + if (ACPI_FAILURE(Status)) + { + AcpiPsFreeOp (Arg); + return_ACPI_STATUS (Status); + } } else { @@ -1048,6 +1099,11 @@ AcpiPsGetNextArg ( Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, ACPI_POSSIBLE_METHOD_CALL); + if (ACPI_FAILURE(Status)) + { + AcpiPsFreeOp (Arg); + return_ACPI_STATUS (Status); + } if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP) { diff --git a/sys/contrib/dev/acpica/components/parser/psloop.c b/sys/contrib/dev/acpica/components/parser/psloop.c index 15d90553b324..f4cac83e6069 100644 --- a/sys/contrib/dev/acpica/components/parser/psloop.c +++ b/sys/contrib/dev/acpica/components/parser/psloop.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/psobject.c b/sys/contrib/dev/acpica/components/parser/psobject.c index 73fd060e0c6f..5457d9d0be7d 100644 --- a/sys/contrib/dev/acpica/components/parser/psobject.c +++ b/sys/contrib/dev/acpica/components/parser/psobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -815,7 +815,8 @@ AcpiPsCompleteFinalOp ( ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status) { - ACPI_STATUS Status2; + ACPI_STATUS ReturnStatus = Status; + BOOLEAN Ascending = TRUE; ACPI_FUNCTION_TRACE_PTR (PsCompleteFinalOp, WalkState); @@ -832,7 +833,7 @@ AcpiPsCompleteFinalOp ( { if (Op) { - if (WalkState->AscendingCallback != NULL) + if (Ascending && WalkState->AscendingCallback != NULL) { WalkState->Op = Op; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); @@ -851,41 +852,28 @@ AcpiPsCompleteFinalOp ( if (Status == AE_CTRL_TERMINATE) { - Status = AE_OK; - - /* Clean up */ - do - { - if (Op) - { - Status2 = AcpiPsCompleteThisOp (WalkState, Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - - AcpiPsPopScope (&(WalkState->ParserState), &Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - } while (Op); - - return_ACPI_STATUS (Status); + Ascending = FALSE; + ReturnStatus = AE_CTRL_TERMINATE; } else if (ACPI_FAILURE (Status)) { /* First error is most important */ - (void) AcpiPsCompleteThisOp (WalkState, Op); - return_ACPI_STATUS (Status); + Ascending = FALSE; + ReturnStatus = Status; } } - Status2 = AcpiPsCompleteThisOp (WalkState, Op); - if (ACPI_FAILURE (Status2)) + Status = AcpiPsCompleteThisOp (WalkState, Op); + if (ACPI_FAILURE (Status)) { - return_ACPI_STATUS (Status2); + Ascending = FALSE; + if (ACPI_SUCCESS (ReturnStatus) || + ReturnStatus == AE_CTRL_TERMINATE) + { + ReturnStatus = Status; + } } } @@ -894,5 +882,5 @@ AcpiPsCompleteFinalOp ( } while (Op); - return_ACPI_STATUS (Status); + return_ACPI_STATUS (ReturnStatus); } diff --git a/sys/contrib/dev/acpica/components/parser/psopcode.c b/sys/contrib/dev/acpica/components/parser/psopcode.c index 4616e28f0f91..a317fab3005e 100644 --- a/sys/contrib/dev/acpica/components/parser/psopcode.c +++ b/sys/contrib/dev/acpica/components/parser/psopcode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -436,7 +436,7 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = /* ACPI 3.0 opcodes */ -/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R), +/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R | AML_NO_OPERAND_RESOLVE), /* ACPI 5.0 opcodes */ diff --git a/sys/contrib/dev/acpica/components/parser/psopinfo.c b/sys/contrib/dev/acpica/components/parser/psopinfo.c index 10a91a9154aa..1db32f4e8246 100644 --- a/sys/contrib/dev/acpica/components/parser/psopinfo.c +++ b/sys/contrib/dev/acpica/components/parser/psopinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -180,8 +180,8 @@ const ACPI_OPCODE_INFO * AcpiPsGetOpcodeInfo ( UINT16 Opcode) { -#ifdef ACPI_DEBUG_OUTPUT - const char *OpcodeName = "Unknown AML opcode"; +#if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT + const char *OpcodeName = "Unknown AML opcode"; #endif ACPI_FUNCTION_NAME (PsGetOpcodeInfo); @@ -207,7 +207,7 @@ AcpiPsGetOpcodeInfo ( #if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT #include <contrib/dev/acpica/compiler/asldefine.h> - + switch (Opcode) { case AML_RAW_DATA_BYTE: @@ -249,12 +249,12 @@ AcpiPsGetOpcodeInfo ( default: break; } -#endif /* Unknown AML opcode */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%4.4X]\n", OpcodeName, Opcode)); +#endif return (&AcpiGbl_AmlOpInfo [_UNK]); } diff --git a/sys/contrib/dev/acpica/components/parser/psparse.c b/sys/contrib/dev/acpica/components/parser/psparse.c index ed9227a0481a..f294033a0039 100644 --- a/sys/contrib/dev/acpica/components/parser/psparse.c +++ b/sys/contrib/dev/acpica/components/parser/psparse.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/psscope.c b/sys/contrib/dev/acpica/components/parser/psscope.c index 31e3e58e685a..4f9f496f5018 100644 --- a/sys/contrib/dev/acpica/components/parser/psscope.c +++ b/sys/contrib/dev/acpica/components/parser/psscope.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/pstree.c b/sys/contrib/dev/acpica/components/parser/pstree.c index f7f79dbcc6f5..b561ba4b0721 100644 --- a/sys/contrib/dev/acpica/components/parser/pstree.c +++ b/sys/contrib/dev/acpica/components/parser/pstree.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/psutils.c b/sys/contrib/dev/acpica/components/parser/psutils.c index 5e4f6935eeb5..3c647940e287 100644 --- a/sys/contrib/dev/acpica/components/parser/psutils.c +++ b/sys/contrib/dev/acpica/components/parser/psutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/pswalk.c b/sys/contrib/dev/acpica/components/parser/pswalk.c index f221c9e82f9c..a0941d44cc03 100644 --- a/sys/contrib/dev/acpica/components/parser/pswalk.c +++ b/sys/contrib/dev/acpica/components/parser/pswalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/parser/psxface.c b/sys/contrib/dev/acpica/components/parser/psxface.c index 4d737748562a..08c1c2bb4f0d 100644 --- a/sys/contrib/dev/acpica/components/parser/psxface.c +++ b/sys/contrib/dev/acpica/components/parser/psxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsaddr.c b/sys/contrib/dev/acpica/components/resources/rsaddr.c index f1ae33784093..9074c6dbaa35 100644 --- a/sys/contrib/dev/acpica/components/resources/rsaddr.c +++ b/sys/contrib/dev/acpica/components/resources/rsaddr.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -431,13 +431,13 @@ AcpiRsGetAddressCommon ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml) { - ACPI_FUNCTION_ENTRY (); - + ACPI_FUNCTION_ENTRY(); /* Validate the Resource Type */ if ((Aml->Address.ResourceType > 2) && - (Aml->Address.ResourceType < 0xC0)) + (Aml->Address.ResourceType < 0xC0) && + (Aml->Address.ResourceType != 0x0A)) { return (FALSE); } @@ -492,7 +492,6 @@ AcpiRsSetAddressCommon ( { ACPI_FUNCTION_ENTRY (); - /* Set the Resource Type and General Flags */ (void) AcpiRsConvertResourceToAml ( diff --git a/sys/contrib/dev/acpica/components/resources/rscalc.c b/sys/contrib/dev/acpica/components/resources/rscalc.c index 07ff54cec01f..fc7575c2ddfb 100644 --- a/sys/contrib/dev/acpica/components/resources/rscalc.c +++ b/sys/contrib/dev/acpica/components/resources/rscalc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -480,6 +480,13 @@ AcpiRsGetAmlLength ( break; + case ACPI_RESOURCE_TYPE_CLOCK_INPUT: + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + Resource->Data.ClockInput.ResourceSource.StringLength); + + break; + case ACPI_RESOURCE_TYPE_SERIAL_BUS: @@ -733,7 +740,7 @@ AcpiRsGetListLength ( } break; - case ACPI_RESOURCE_NAME_SERIAL_BUS: + case ACPI_RESOURCE_NAME_SERIAL_BUS: { MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[ AmlResource->CommonSerialBus.Type]; @@ -741,6 +748,7 @@ AcpiRsGetListLength ( AmlResource->CommonSerialBus.ResourceLength - MinimumAmlResourceLength; break; + } case ACPI_RESOURCE_NAME_PIN_CONFIG: @@ -789,6 +797,12 @@ AcpiRsGetListLength ( break; + case ACPI_RESOURCE_NAME_CLOCK_INPUT: + ExtraStructBytes = AcpiRsStreamOptionLength ( + ResourceLength, MinimumAmlResourceLength); + + break; + default: break; diff --git a/sys/contrib/dev/acpica/components/resources/rscreate.c b/sys/contrib/dev/acpica/components/resources/rscreate.c index aa5c68edcc59..b930ced8396f 100644 --- a/sys/contrib/dev/acpica/components/resources/rscreate.c +++ b/sys/contrib/dev/acpica/components/resources/rscreate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsdump.c b/sys/contrib/dev/acpica/components/resources/rsdump.c index a7f16bed8fcd..2f3e996af9af 100644 --- a/sys/contrib/dev/acpica/components/resources/rsdump.c +++ b/sys/contrib/dev/acpica/components/resources/rsdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -230,6 +230,7 @@ AcpiRsDumpDescriptor ( ACPI_RSDUMP_INFO *Table); +#ifdef ACPI_DEBUGGER /******************************************************************************* * * FUNCTION: AcpiRsDumpResourceList @@ -359,7 +360,7 @@ AcpiRsDumpIrqList ( PrtElement, PrtElement->Length); } } - +#endif /******************************************************************************* * diff --git a/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c b/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c index f42a8e871fe6..293eeb596928 100644 --- a/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c +++ b/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -374,6 +374,17 @@ ACPI_RSDUMP_INFO AcpiRsDumpPinFunction[10] = {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (PinFunction.VendorData), "VendorData", NULL}, }; +ACPI_RSDUMP_INFO AcpiRsDumpClockInput[7] = +{ + {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpClockInput), "ClockInput", NULL}, + {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (ClockInput.RevisionId), "RevisionId", NULL}, + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (ClockInput.FrequencyNumerator), "FrequencyNumerator", NULL}, + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (ClockInput.FrequencyDivisor), "FrequencyDivisor", NULL}, + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ClockInput.Scale), "Scale", AcpiGbl_ClockInputScale}, + {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ClockInput.Mode), "Mode", AcpiGbl_ClockInputMode}, + {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (ClockInput.ResourceSource), "ResourceSource", NULL}, +}; + ACPI_RSDUMP_INFO AcpiRsDumpPinConfig[11] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinConfig), "PinConfig", NULL}, diff --git a/sys/contrib/dev/acpica/components/resources/rsinfo.c b/sys/contrib/dev/acpica/components/resources/rsinfo.c index cdcae0a8221c..7a1bb07abb94 100644 --- a/sys/contrib/dev/acpica/components/resources/rsinfo.c +++ b/sys/contrib/dev/acpica/components/resources/rsinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -197,6 +197,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] = AcpiRsConvertPinGroup, /* 0x16, ACPI_RESOURCE_TYPE_PIN_GROUP */ AcpiRsConvertPinGroupFunction, /* 0x17, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */ AcpiRsConvertPinGroupConfig, /* 0x18, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */ + AcpiRsConvertClockInput, /* 0x19, ACPI_RESOURCE_TYPE_CLOCK_INPUT */ }; /* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ @@ -243,6 +244,7 @@ ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] = AcpiRsConvertPinGroup, /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */ AcpiRsConvertPinGroupFunction, /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */ AcpiRsConvertPinGroupConfig, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */ + AcpiRsConvertClockInput, /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */ }; /* Subtype table for SerialBus -- I2C, SPI, UART, and CSI2 */ @@ -288,6 +290,7 @@ ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] = AcpiRsDumpPinGroup, /* ACPI_RESOURCE_TYPE_PIN_GROUP */ AcpiRsDumpPinGroupFunction, /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */ AcpiRsDumpPinGroupConfig, /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */ + AcpiRsDumpClockInput, /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */ }; ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[] = @@ -333,6 +336,7 @@ const UINT8 AcpiGbl_AmlResourceSizes[] = sizeof (AML_RESOURCE_PIN_GROUP), /* ACPI_RESOURCE_TYPE_PIN_GROUP */ sizeof (AML_RESOURCE_PIN_GROUP_FUNCTION), /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */ sizeof (AML_RESOURCE_PIN_GROUP_CONFIG), /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */ + sizeof (AML_RESOURCE_CLOCK_INPUT), /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */ }; @@ -378,6 +382,7 @@ const UINT8 AcpiGbl_ResourceStructSizes[] = ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP), ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_FUNCTION), ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_CONFIG), + ACPI_RS_SIZE (ACPI_RESOURCE_CLOCK_INPUT), }; const UINT8 AcpiGbl_AmlResourceSerialBusSizes[] = diff --git a/sys/contrib/dev/acpica/components/resources/rsio.c b/sys/contrib/dev/acpica/components/resources/rsio.c index 17cfb861ba47..46d9b2f8aa4b 100644 --- a/sys/contrib/dev/acpica/components/resources/rsio.c +++ b/sys/contrib/dev/acpica/components/resources/rsio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsirq.c b/sys/contrib/dev/acpica/components/resources/rsirq.c index 9fe2f2bbb9e9..80482eb097d6 100644 --- a/sys/contrib/dev/acpica/components/resources/rsirq.c +++ b/sys/contrib/dev/acpica/components/resources/rsirq.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rslist.c b/sys/contrib/dev/acpica/components/resources/rslist.c index e9b4ef207680..2de70ad4fc58 100644 --- a/sys/contrib/dev/acpica/components/resources/rslist.c +++ b/sys/contrib/dev/acpica/components/resources/rslist.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsmemory.c b/sys/contrib/dev/acpica/components/resources/rsmemory.c index 28e22e8c7102..0430379a0f05 100644 --- a/sys/contrib/dev/acpica/components/resources/rsmemory.c +++ b/sys/contrib/dev/acpica/components/resources/rsmemory.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsmisc.c b/sys/contrib/dev/acpica/components/resources/rsmisc.c index 1e7338e747fc..725a130a2cec 100644 --- a/sys/contrib/dev/acpica/components/resources/rsmisc.c +++ b/sys/contrib/dev/acpica/components/resources/rsmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -349,7 +349,8 @@ AcpiRsConvertAmlToResource ( case ACPI_RSC_COUNT_SERIAL_VEN: - ItemCount = ACPI_GET16 (Source) - Info->Value; + ACPI_MOVE_16_TO_16(&Temp16, Source); + ItemCount = Temp16 - Info->Value; Resource->Length = Resource->Length + ItemCount; ACPI_SET16 (Destination, ItemCount); @@ -357,9 +358,10 @@ AcpiRsConvertAmlToResource ( case ACPI_RSC_COUNT_SERIAL_RES: + ACPI_MOVE_16_TO_16(&Temp16, Source); ItemCount = (AmlResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER)) - - ACPI_GET16 (Source) - Info->Value; + Temp16 - Info->Value; Resource->Length = Resource->Length + ItemCount; ACPI_SET16 (Destination, ItemCount); @@ -437,8 +439,9 @@ AcpiRsConvertAmlToResource ( /* Copy the ResourceSource string */ + ACPI_MOVE_16_TO_16 (&Temp16, Source); Source = ACPI_ADD_PTR ( - void, Aml, (ACPI_GET16 (Source) + Info->Value)); + void, Aml, (Temp16 + Info->Value)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; diff --git a/sys/contrib/dev/acpica/components/resources/rsserial.c b/sys/contrib/dev/acpica/components/resources/rsserial.c index c32ad2dc2f88..ab09939850c0 100644 --- a/sys/contrib/dev/acpica/components/resources/rsserial.c +++ b/sys/contrib/dev/acpica/components/resources/rsserial.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -256,6 +256,50 @@ ACPI_RSCONVERT_INFO AcpiRsConvertGpio[18] = /******************************************************************************* * + * AcpiRsConvertClockInput + * + ******************************************************************************/ + +ACPI_RSCONVERT_INFO AcpiRsConvertClockInput[8] = +{ + {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_CLOCK_INPUT, + ACPI_RS_SIZE (ACPI_RESOURCE_CLOCK_INPUT), + ACPI_RSC_TABLE_SIZE (AcpiRsConvertClockInput)}, + + {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_CLOCK_INPUT, + sizeof (AML_RESOURCE_CLOCK_INPUT), + 0}, + + {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.ClockInput.RevisionId), + AML_OFFSET (ClockInput.RevisionId), + 1}, + + {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Mode), + AML_OFFSET (ClockInput.Flags), + 0}, + + {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Scale), + AML_OFFSET (ClockInput.Flags), + 1}, + + {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.ClockInput.FrequencyDivisor), + AML_OFFSET (ClockInput.FrequencyDivisor), + 2}, + + {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.ClockInput.FrequencyNumerator), + AML_OFFSET (ClockInput.FrequencyNumerator), + 4}, + + /* Resource Source */ + {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.ClockInput.ResourceSource), + 0, + sizeof(AML_RESOURCE_CLOCK_INPUT)}, + +}; + + +/******************************************************************************* + * * AcpiRsConvertPinfunction * ******************************************************************************/ diff --git a/sys/contrib/dev/acpica/components/resources/rsutils.c b/sys/contrib/dev/acpica/components/resources/rsutils.c index 0b357979c9dc..cc89fcfbb356 100644 --- a/sys/contrib/dev/acpica/components/resources/rsutils.c +++ b/sys/contrib/dev/acpica/components/resources/rsutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/resources/rsxface.c b/sys/contrib/dev/acpica/components/resources/rsxface.c index 08ec4be5881d..89cc58864ead 100644 --- a/sys/contrib/dev/acpica/components/resources/rsxface.c +++ b/sys/contrib/dev/acpica/components/resources/rsxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/tables/tbdata.c b/sys/contrib/dev/acpica/components/tables/tbdata.c index 5067d2348c29..46c7724bdda4 100644 --- a/sys/contrib/dev/acpica/components/tables/tbdata.c +++ b/sys/contrib/dev/acpica/components/tables/tbdata.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -724,7 +724,7 @@ AcpiTbVerifyTempTable ( { /* Verify the checksum */ - Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length); + Status = AcpiUtVerifyChecksum (TableDesc->Pointer, TableDesc->Length); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY, diff --git a/sys/contrib/dev/acpica/components/tables/tbfadt.c b/sys/contrib/dev/acpica/components/tables/tbfadt.c index 0572989db0af..70490b5d0e70 100644 --- a/sys/contrib/dev/acpica/components/tables/tbfadt.c +++ b/sys/contrib/dev/acpica/components/tables/tbfadt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -472,7 +472,7 @@ AcpiTbParseFadt ( * Validate the FADT checksum before we copy the table. Ignore * checksum error as we want to try to get the DSDT and FACS. */ - (void) AcpiTbVerifyChecksum (Table, Length); + (void) AcpiUtVerifyChecksum (Table, Length); /* Create a local copy of the FADT in common ACPI 2.0+ format */ @@ -489,24 +489,19 @@ AcpiTbParseFadt ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_DsdtIndex); - /* If Hardware Reduced flag is set, there is no FACS */ - - if (!AcpiGbl_ReducedHardware) + if (AcpiGbl_FADT.Facs) { - if (AcpiGbl_FADT.Facs) - { - AcpiTbInstallStandardTable ( - (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, - &AcpiGbl_FacsIndex); - } - if (AcpiGbl_FADT.XFacs) - { - AcpiTbInstallStandardTable ( - (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, - &AcpiGbl_XFacsIndex); - } + AcpiTbInstallStandardTable ( + (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, + &AcpiGbl_FacsIndex); + } + if (AcpiGbl_FADT.XFacs) + { + AcpiTbInstallStandardTable ( + (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, + &AcpiGbl_XFacsIndex); } } diff --git a/sys/contrib/dev/acpica/components/tables/tbfind.c b/sys/contrib/dev/acpica/components/tables/tbfind.c index a714dc48f229..e497cca9b553 100644 --- a/sys/contrib/dev/acpica/components/tables/tbfind.c +++ b/sys/contrib/dev/acpica/components/tables/tbfind.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -208,8 +208,8 @@ AcpiTbFindTable ( memset (&Header, 0, sizeof (ACPI_TABLE_HEADER)); ACPI_COPY_NAMESEG (Header.Signature, Signature); - strncpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE); - strncpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE); + memcpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE); + memcpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE); /* Search for the table */ diff --git a/sys/contrib/dev/acpica/components/tables/tbinstal.c b/sys/contrib/dev/acpica/components/tables/tbinstal.c index 7fe98ea2f27e..309ec5b68472 100644 --- a/sys/contrib/dev/acpica/components/tables/tbinstal.c +++ b/sys/contrib/dev/acpica/components/tables/tbinstal.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/tables/tbprint.c b/sys/contrib/dev/acpica/components/tables/tbprint.c index 0428968a2908..8b812a890a07 100644 --- a/sys/contrib/dev/acpica/components/tables/tbprint.c +++ b/sys/contrib/dev/acpica/components/tables/tbprint.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -152,6 +152,8 @@ #include <contrib/dev/acpica/include/acpi.h> #include <contrib/dev/acpica/include/accommon.h> #include <contrib/dev/acpica/include/actables.h> +#include <contrib/dev/acpica/include/acdisasm.h> +#include <contrib/dev/acpica/include/acutils.h> #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbprint") @@ -192,7 +194,7 @@ AcpiTbFixString ( while (Length && *String) { - if (!isprint ((int) *String)) + if (!isprint ((int) (UINT8) *String)) { *String = '?'; } @@ -277,6 +279,14 @@ AcpiTbPrintTableHeader ( ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision, LocalHeader.OemId)); } + else if (AcpiGbl_CDAT && !AcpiUtValidNameseg (Header->Signature)) + { + /* CDAT does not use the common ACPI table header */ + + ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X", + ACPI_SIG_CDAT, ACPI_FORMAT_UINT64 (Address), + ACPI_CAST_PTR (ACPI_TABLE_CDAT, Header)->Length)); + } else { /* Standard ACPI table with full common header */ @@ -292,90 +302,3 @@ AcpiTbPrintTableHeader ( LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision)); } } - - -/******************************************************************************* - * - * FUNCTION: AcpiTbValidateChecksum - * - * PARAMETERS: Table - ACPI table to verify - * Length - Length of entire table - * - * RETURN: Status - * - * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns - * exception on bad checksum. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbVerifyChecksum ( - ACPI_TABLE_HEADER *Table, - UINT32 Length) -{ - UINT8 Checksum; - - - /* - * FACS/S3PT: - * They are the odd tables, have no standard ACPI header and no checksum - */ - - if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) || - ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) - { - return (AE_OK); - } - - /* Compute the checksum on the table */ - - Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length); - - /* Checksum ok? (should be zero) */ - - if (Checksum) - { - ACPI_BIOS_WARNING ((AE_INFO, - "Incorrect checksum in table [%4.4s] - 0x%2.2X, " - "should be 0x%2.2X", - Table->Signature, Table->Checksum, - (UINT8) (Table->Checksum - Checksum))); - -#if (ACPI_CHECKSUM_ABORT) - return (AE_BAD_CHECKSUM); -#endif - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbChecksum - * - * PARAMETERS: Buffer - Pointer to memory region to be checked - * Length - Length of this memory region - * - * RETURN: Checksum (UINT8) - * - * DESCRIPTION: Calculates circular checksum of memory region. - * - ******************************************************************************/ - -UINT8 -AcpiTbChecksum ( - UINT8 *Buffer, - UINT32 Length) -{ - UINT8 Sum = 0; - UINT8 *End = Buffer + Length; - - - while (Buffer < End) - { - Sum = (UINT8) (Sum + *(Buffer++)); - } - - return (Sum); -} diff --git a/sys/contrib/dev/acpica/components/tables/tbutils.c b/sys/contrib/dev/acpica/components/tables/tbutils.c index 7698297c5d92..61d8ac597afa 100644 --- a/sys/contrib/dev/acpica/components/tables/tbutils.c +++ b/sys/contrib/dev/acpica/components/tables/tbutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -165,7 +165,6 @@ AcpiTbGetRootTableEntry ( UINT32 TableEntrySize); -#if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiTbInitializeFacs @@ -185,15 +184,7 @@ AcpiTbInitializeFacs ( { ACPI_TABLE_FACS *Facs; - - /* If Hardware Reduced flag is set, there is no FACS */ - - if (AcpiGbl_ReducedHardware) - { - AcpiGbl_FACS = NULL; - return (AE_OK); - } - else if (AcpiGbl_FADT.XFacs && + if (AcpiGbl_FADT.XFacs && (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) { (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex, @@ -211,7 +202,6 @@ AcpiTbInitializeFacs ( return (AE_OK); } -#endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* @@ -323,6 +313,7 @@ AcpiTbGetRootTableEntry ( UINT8 *TableEntry, UINT32 TableEntrySize) { + UINT32 Address32; UINT64 Address64; @@ -336,8 +327,8 @@ AcpiTbGetRootTableEntry ( * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( - UINT32, TableEntry))); + ACPI_MOVE_32_TO_32(&Address32, TableEntry); + return Address32; } else { @@ -471,7 +462,7 @@ AcpiTbParseRootTable ( /* Validate the root table checksum */ - Status = AcpiTbVerifyChecksum (Table, Length); + Status = AcpiUtVerifyChecksum (Table, Length); if (ACPI_FAILURE (Status)) { AcpiOsUnmapMemory (Table, Length); diff --git a/sys/contrib/dev/acpica/components/tables/tbxface.c b/sys/contrib/dev/acpica/components/tables/tbxface.c index 41eb3cfeb83f..0b16c0a9ebec 100644 --- a/sys/contrib/dev/acpica/components/tables/tbxface.c +++ b/sys/contrib/dev/acpica/components/tables/tbxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/tables/tbxfload.c b/sys/contrib/dev/acpica/components/tables/tbxfload.c index 714a6e055dd3..af49869d626c 100644 --- a/sys/contrib/dev/acpica/components/tables/tbxfload.c +++ b/sys/contrib/dev/acpica/components/tables/tbxfload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/tables/tbxfroot.c b/sys/contrib/dev/acpica/components/tables/tbxfroot.c index 39cf9ba32e8b..7c444bda9c8c 100644 --- a/sys/contrib/dev/acpica/components/tables/tbxfroot.c +++ b/sys/contrib/dev/acpica/components/tables/tbxfroot.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -227,7 +227,7 @@ AcpiTbValidateRsdp ( /* Check the standard checksum */ - if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0) + if (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0) { return (AE_BAD_CHECKSUM); } @@ -235,7 +235,7 @@ AcpiTbValidateRsdp ( /* Check extended checksum if table version >= 2 */ if ((Rsdp->Revision >= 2) && - (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0)) + (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0)) { return (AE_BAD_CHECKSUM); } @@ -271,6 +271,7 @@ AcpiFindRootPointer ( UINT8 *TablePtr; UINT8 *MemRover; UINT32 PhysicalAddress; + UINT32 EbdaWindowSize; ACPI_FUNCTION_TRACE (AcpiFindRootPointer); @@ -299,27 +300,40 @@ AcpiFindRootPointer ( /* EBDA present? */ - if (PhysicalAddress > 0x400) + /* + * Check that the EBDA pointer from memory is sane and does not point + * above valid low memory + */ + if (PhysicalAddress > 0x400 && + PhysicalAddress < 0xA0000) { /* - * 1b) Search EBDA paragraphs (EBDA is required to be a - * minimum of 1K length) + * Calculate the scan window size + * The EBDA is not guaranteed to be larger than a KiB and in case + * that it is smaller, the scanning function would leave the low + * memory and continue to the VGA range. + */ + EbdaWindowSize = ACPI_MIN(ACPI_EBDA_WINDOW_SIZE, + 0xA0000 - PhysicalAddress); + + /* + * 1b) Search EBDA paragraphs */ TablePtr = AcpiOsMapMemory ( (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, - ACPI_EBDA_WINDOW_SIZE); + EbdaWindowSize); if (!TablePtr) { ACPI_ERROR ((AE_INFO, "Could not map memory at 0x%8.8X for length %u", - PhysicalAddress, ACPI_EBDA_WINDOW_SIZE)); + PhysicalAddress, EbdaWindowSize)); return_ACPI_STATUS (AE_NO_MEMORY); } MemRover = AcpiTbScanMemoryForRsdp ( - TablePtr, ACPI_EBDA_WINDOW_SIZE); - AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); + TablePtr, EbdaWindowSize); + AcpiOsUnmapMemory (TablePtr, EbdaWindowSize); if (MemRover) { diff --git a/sys/contrib/dev/acpica/components/utilities/utaddress.c b/sys/contrib/dev/acpica/components/utilities/utaddress.c index c1a76098f645..7ea0ff3e91b7 100644 --- a/sys/contrib/dev/acpica/components/utilities/utaddress.c +++ b/sys/contrib/dev/acpica/components/utilities/utaddress.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utalloc.c b/sys/contrib/dev/acpica/components/utilities/utalloc.c index 98b1c48e39ec..0dfdec633c2f 100644 --- a/sys/contrib/dev/acpica/components/utilities/utalloc.c +++ b/sys/contrib/dev/acpica/components/utilities/utalloc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utascii.c b/sys/contrib/dev/acpica/components/utilities/utascii.c index 747bcdf2e7af..cf64bdee02df 100644 --- a/sys/contrib/dev/acpica/components/utilities/utascii.c +++ b/sys/contrib/dev/acpica/components/utilities/utascii.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utbuffer.c b/sys/contrib/dev/acpica/components/utilities/utbuffer.c index 795e3090c312..b22530412b2f 100644 --- a/sys/contrib/dev/acpica/components/utilities/utbuffer.c +++ b/sys/contrib/dev/acpica/components/utilities/utbuffer.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utcache.c b/sys/contrib/dev/acpica/components/utilities/utcache.c index 068059e80d94..232154696307 100644 --- a/sys/contrib/dev/acpica/components/utilities/utcache.c +++ b/sys/contrib/dev/acpica/components/utilities/utcache.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -433,9 +433,9 @@ AcpiOsAcquireObject ( { /* The cache is empty, create a new object */ - ACPI_MEM_TRACKING (Cache->TotalAllocated++); - #ifdef ACPI_DBG_TRACK_ALLOCATIONS + ACPI_MEM_TRACKING (Cache->TotalAllocated++); + if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache->MaxOccupied) { Cache->MaxOccupied = Cache->TotalAllocated - Cache->TotalFreed; diff --git a/sys/contrib/dev/acpica/components/utilities/utcksum.c b/sys/contrib/dev/acpica/components/utilities/utcksum.c new file mode 100644 index 000000000000..50f8f80570ef --- /dev/null +++ b/sys/contrib/dev/acpica/components/utilities/utcksum.c @@ -0,0 +1,335 @@ +/****************************************************************************** + * + * Module Name: utcksum - Support generating table checksums + * + *****************************************************************************/ + +/****************************************************************************** + * + * 1. Copyright Notice + * + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. + * All rights reserved. + * + * 2. License + * + * 2.1. This is your license from Intel Corp. under its intellectual property + * rights. You may have additional license terms from the party that provided + * you this software, covering your right to use that party's intellectual + * property rights. + * + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a + * copy of the source code appearing in this file ("Covered Code") an + * irrevocable, perpetual, worldwide license under Intel's copyrights in the + * base code distributed originally by Intel ("Original Intel Code") to copy, + * make derivatives, distribute, use and display any portion of the Covered + * Code in any form, with the right to sublicense such rights; and + * + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent + * license (with the right to sublicense), under only those claims of Intel + * patents that are infringed by the Original Intel Code, to make, use, sell, + * offer to sell, and import the Covered Code and derivative works thereof + * solely to the minimum extent necessary to exercise the above copyright + * license, and in no event shall the patent license extend to any additions + * to or modifications of the Original Intel Code. No other license or right + * is granted directly or by implication, estoppel or otherwise; + * + * The above copyright and patent license is granted only if the following + * conditions are met: + * + * 3. Conditions + * + * 3.1. Redistribution of Source with Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification with rights to further distribute source must include + * the above Copyright Notice, the above License, this list of Conditions, + * and the following Disclaimer and Export Compliance provision. In addition, + * Licensee must cause all Covered Code to which Licensee contributes to + * contain a file documenting the changes Licensee made to create that Covered + * Code and the date of any change. Licensee must include in that file the + * documentation of any changes made by any predecessor Licensee. Licensee + * must include a prominent statement that the modification is derived, + * directly or indirectly, from Original Intel Code. + * + * 3.2. Redistribution of Source with no Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification without rights to further distribute source must + * include the following Disclaimer and Export Compliance provision in the + * documentation and/or other materials provided with distribution. In + * addition, Licensee may not authorize further sublicense of source of any + * portion of the Covered Code, and must include terms to the effect that the + * license from Licensee to its licensee is limited to the intellectual + * property embodied in the software Licensee provides to its licensee, and + * not to intellectual property embodied in modifications its licensee may + * make. + * + * 3.3. Redistribution of Executable. Redistribution in executable form of any + * substantial portion of the Covered Code or modification must reproduce the + * above Copyright Notice, and the following Disclaimer and Export Compliance + * provision in the documentation and/or other materials provided with the + * distribution. + * + * 3.4. Intel retains all right, title, and interest in and to the Original + * Intel Code. + * + * 3.5. Neither the name Intel nor any other trademark owned or controlled by + * Intel shall be used in advertising or otherwise to promote the sale, use or + * other dealings in products derived from or relating to the Covered Code + * without prior written authorization from Intel. + * + * 4. Disclaimer and Export Compliance + * + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A + * PARTICULAR PURPOSE. + * + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY + * LIMITED REMEDY. + * + * 4.3. Licensee shall not export, either directly or indirectly, any of this + * software or system incorporating such software without first obtaining any + * required license or other approval from the U. S. Department of Commerce or + * any other agency or department of the United States Government. In the + * event Licensee exports any such software from the United States or + * re-exports any such software from a foreign destination, Licensee shall + * ensure that the distribution and export/re-export of the software is in + * compliance with all laws, regulations, orders, or other restrictions of the + * U.S. Export Administration Regulations. Licensee agrees that neither it nor + * any of its subsidiaries will export/re-export any technical data, process, + * software, or service, directly or indirectly, to any country for which the + * United States government or any agency thereof requires an export license, + * other governmental approval, or letter of assurance, without first obtaining + * such license, approval or letter. + * + ***************************************************************************** + * + * Alternatively, you may choose to be licensed under the terms of the + * following license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Alternatively, you may choose to be licensed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + *****************************************************************************/ + +#include <contrib/dev/acpica/include/acpi.h> +#include <contrib/dev/acpica/include/accommon.h> +#include <contrib/dev/acpica/include/acdisasm.h> +#include <contrib/dev/acpica/include/acutils.h> + + +/* This module used for application-level code only */ + +#define _COMPONENT ACPI_CA_DISASSEMBLER + ACPI_MODULE_NAME ("utcksum") + + +/******************************************************************************* + * + * FUNCTION: AcpiUtVerifyChecksum + * + * PARAMETERS: Table - ACPI table to verify + * Length - Length of entire table + * + * RETURN: Status + * + * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns + * exception on bad checksum. + * Note: We don't have to check for a CDAT here, since CDAT is + * not in the RSDT/XSDT, and the CDAT table is never installed + * via ACPICA. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtVerifyChecksum ( + ACPI_TABLE_HEADER *Table, + UINT32 Length) +{ + UINT8 Checksum; + + + /* + * FACS/S3PT: + * They are the odd tables, have no standard ACPI header and no checksum + */ + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) || + ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) + { + return (AE_OK); + } + + /* Compute the checksum on the table */ + + Length = Table->Length; + Checksum = AcpiUtGenerateChecksum (ACPI_CAST_PTR (UINT8, Table), Length, Table->Checksum); + + /* Computed checksum matches table? */ + + if (Checksum != Table->Checksum) + { + ACPI_BIOS_WARNING ((AE_INFO, + "Incorrect checksum in table [%4.4s] - 0x%2.2X, " + "should be 0x%2.2X", + Table->Signature, Table->Checksum, + Table->Checksum - Checksum)); + +#if (ACPI_CHECKSUM_ABORT) + return (AE_BAD_CHECKSUM); +#endif + } + + return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtVerifyCdatChecksum + * + * PARAMETERS: Table - CDAT ACPI table to verify + * Length - Length of entire table + * + * RETURN: Status + * + * DESCRIPTION: Verifies that the CDAT table checksums to zero. Optionally + * returns an exception on bad checksum. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtVerifyCdatChecksum ( + ACPI_TABLE_CDAT *CdatTable, + UINT32 Length) +{ + UINT8 Checksum; + + + /* Compute the checksum on the table */ + + Checksum = AcpiUtGenerateChecksum (ACPI_CAST_PTR (UINT8, CdatTable), + CdatTable->Length, CdatTable->Checksum); + + /* Computed checksum matches table? */ + + if (Checksum != CdatTable->Checksum) + { + ACPI_BIOS_WARNING ((AE_INFO, + "Incorrect checksum in table [%4.4s] - 0x%2.2X, " + "should be 0x%2.2X", + AcpiGbl_CDAT, CdatTable->Checksum, Checksum)); + +#if (ACPI_CHECKSUM_ABORT) + return (AE_BAD_CHECKSUM); +#endif + } + + CdatTable->Checksum = Checksum; + return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtGenerateChecksum + * + * PARAMETERS: Table - Pointer to table to be checksummed + * Length - Length of the table + * OriginalChecksum - Value of the checksum field + * + * RETURN: 8 bit checksum of buffer + * + * DESCRIPTION: Computes an 8 bit checksum of the table. + * + ******************************************************************************/ + +UINT8 +AcpiUtGenerateChecksum ( + void *Table, + UINT32 Length, + UINT8 OriginalChecksum) +{ + UINT8 Checksum; + + + /* Sum the entire table as-is */ + + Checksum = AcpiUtChecksum ((UINT8 *) Table, Length); + + /* Subtract off the existing checksum value in the table */ + + Checksum = (UINT8) (Checksum - OriginalChecksum); + + /* Compute and return the final checksum */ + + Checksum = (UINT8) (0 - Checksum); + return (Checksum); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtChecksum + * + * PARAMETERS: Buffer - Pointer to memory region to be checked + * Length - Length of this memory region + * + * RETURN: Checksum (UINT8) + * + * DESCRIPTION: Calculates circular checksum of memory region. + * + ******************************************************************************/ + +UINT8 +AcpiUtChecksum ( + UINT8 *Buffer, + UINT32 Length) +{ + UINT8 Sum = 0; + UINT8 *End = Buffer + Length; + + + while (Buffer < End) + { + Sum = (UINT8) (Sum + *(Buffer++)); + } + + return (Sum); +} diff --git a/sys/contrib/dev/acpica/components/utilities/utcopy.c b/sys/contrib/dev/acpica/components/utilities/utcopy.c index bf34bbb4a34d..fd4d6922a1f2 100644 --- a/sys/contrib/dev/acpica/components/utilities/utcopy.c +++ b/sys/contrib/dev/acpica/components/utilities/utcopy.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utdebug.c b/sys/contrib/dev/acpica/components/utilities/utdebug.c index eafaae4e6544..90b8e246a1a9 100644 --- a/sys/contrib/dev/acpica/components/utilities/utdebug.c +++ b/sys/contrib/dev/acpica/components/utilities/utdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -185,7 +185,12 @@ AcpiUtInitStackPtrTrace ( ACPI_SIZE CurrentSp; +#pragma GCC diagnostic push +#if defined(__GNUC__) && __GNUC__ >= 12 +#pragma GCC diagnostic ignored "-Wdangling-pointer=" +#endif AcpiGbl_EntryStackPointer = &CurrentSp; +#pragma GCC diagnostic pop } @@ -210,7 +215,12 @@ AcpiUtTrackStackPtr ( if (&CurrentSp < AcpiGbl_LowestStackPointer) { +#pragma GCC diagnostic push +#if defined(__GNUC__) && __GNUC__ >= 12 +#pragma GCC diagnostic ignored "-Wdangling-pointer=" +#endif AcpiGbl_LowestStackPointer = &CurrentSp; +#pragma GCC diagnostic pop } if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting) diff --git a/sys/contrib/dev/acpica/components/utilities/utdecode.c b/sys/contrib/dev/acpica/components/utilities/utdecode.c index 4c7e5d342d25..00a2de9e9a5d 100644 --- a/sys/contrib/dev/acpica/components/utilities/utdecode.c +++ b/sys/contrib/dev/acpica/components/utilities/utdecode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utdelete.c b/sys/contrib/dev/acpica/components/utilities/utdelete.c index ea61d9998674..e88cc736990b 100644 --- a/sys/contrib/dev/acpica/components/utilities/utdelete.c +++ b/sys/contrib/dev/acpica/components/utilities/utdelete.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -293,7 +293,7 @@ AcpiUtDeleteInternalObj ( /* Global Lock has extra semaphore */ (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore); - AcpiGbl_GlobalLockSemaphore = NULL; + AcpiGbl_GlobalLockSemaphore = ACPI_SEMAPHORE_NULL; AcpiOsDeleteMutex (Object->Mutex.OsMutex); AcpiGbl_GlobalLockMutex = NULL; @@ -312,7 +312,7 @@ AcpiUtDeleteInternalObj ( Object, Object->Event.OsSemaphore)); (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore); - Object->Event.OsSemaphore = NULL; + Object->Event.OsSemaphore = ACPI_SEMAPHORE_NULL; break; case ACPI_TYPE_METHOD: @@ -574,7 +574,7 @@ AcpiUtUpdateRefCount ( "Obj %p Type %.2X [%s] Refs %.2X [Incremented]\n", Object, Object->Common.Type, AcpiUtGetObjectTypeName (Object), NewCount)); - Message = "Incremement"; + Message = "Increment"; break; case REF_DECREMENT: diff --git a/sys/contrib/dev/acpica/components/utilities/uterror.c b/sys/contrib/dev/acpica/components/utilities/uterror.c index e9eb3d6fd46a..1537f69a2a2b 100644 --- a/sys/contrib/dev/acpica/components/utilities/uterror.c +++ b/sys/contrib/dev/acpica/components/utilities/uterror.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/uteval.c b/sys/contrib/dev/acpica/components/utilities/uteval.c index 4c5e6fbec98d..53f843062179 100644 --- a/sys/contrib/dev/acpica/components/utilities/uteval.c +++ b/sys/contrib/dev/acpica/components/utilities/uteval.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utexcep.c b/sys/contrib/dev/acpica/components/utilities/utexcep.c index 57101529783d..b3e606ceef57 100644 --- a/sys/contrib/dev/acpica/components/utilities/utexcep.c +++ b/sys/contrib/dev/acpica/components/utilities/utexcep.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utglobal.c b/sys/contrib/dev/acpica/components/utilities/utglobal.c index 2a121dfcca3c..95d679a20746 100644 --- a/sys/contrib/dev/acpica/components/utilities/utglobal.c +++ b/sys/contrib/dev/acpica/components/utilities/utglobal.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/uthex.c b/sys/contrib/dev/acpica/components/utilities/uthex.c index 9aedc9224805..2806f1c48148 100644 --- a/sys/contrib/dev/acpica/components/utilities/uthex.c +++ b/sys/contrib/dev/acpica/components/utilities/uthex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utids.c b/sys/contrib/dev/acpica/components/utilities/utids.c index d4d62f019c28..3dfb908302c6 100644 --- a/sys/contrib/dev/acpica/components/utilities/utids.c +++ b/sys/contrib/dev/acpica/components/utilities/utids.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utinit.c b/sys/contrib/dev/acpica/components/utilities/utinit.c index 3c9e8c71fd35..b5a4b7e7d936 100644 --- a/sys/contrib/dev/acpica/components/utilities/utinit.c +++ b/sys/contrib/dev/acpica/components/utilities/utinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -316,7 +316,7 @@ AcpiUtInitGlobals ( /* Global Lock support */ - AcpiGbl_GlobalLockSemaphore = NULL; + AcpiGbl_GlobalLockSemaphore = ACPI_SEMAPHORE_NULL; AcpiGbl_GlobalLockMutex = NULL; AcpiGbl_GlobalLockAcquired = FALSE; AcpiGbl_GlobalLockHandle = 0; diff --git a/sys/contrib/dev/acpica/components/utilities/utlock.c b/sys/contrib/dev/acpica/components/utilities/utlock.c index 6f7e6be97c6e..a06b27525cc3 100644 --- a/sys/contrib/dev/acpica/components/utilities/utlock.c +++ b/sys/contrib/dev/acpica/components/utilities/utlock.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utmath.c b/sys/contrib/dev/acpica/components/utilities/utmath.c index 18aa1707b139..48bbe8f3d8c8 100644 --- a/sys/contrib/dev/acpica/components/utilities/utmath.c +++ b/sys/contrib/dev/acpica/components/utilities/utmath.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utmisc.c b/sys/contrib/dev/acpica/components/utilities/utmisc.c index 44b0ca48f73e..13dffc6674d3 100644 --- a/sys/contrib/dev/acpica/components/utilities/utmisc.c +++ b/sys/contrib/dev/acpica/components/utilities/utmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utmutex.c b/sys/contrib/dev/acpica/components/utilities/utmutex.c index ec25202c9789..b0b26458818e 100644 --- a/sys/contrib/dev/acpica/components/utilities/utmutex.c +++ b/sys/contrib/dev/acpica/components/utilities/utmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utnonansi.c b/sys/contrib/dev/acpica/components/utilities/utnonansi.c index 3c724bf01339..f8b3a29e3283 100644 --- a/sys/contrib/dev/acpica/components/utilities/utnonansi.c +++ b/sys/contrib/dev/acpica/components/utilities/utnonansi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utobject.c b/sys/contrib/dev/acpica/components/utilities/utobject.c index 287a1cde2179..046b6c2531b6 100644 --- a/sys/contrib/dev/acpica/components/utilities/utobject.c +++ b/sys/contrib/dev/acpica/components/utilities/utobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utosi.c b/sys/contrib/dev/acpica/components/utilities/utosi.c index 0b3774e181f8..8a2d5093f563 100644 --- a/sys/contrib/dev/acpica/components/utilities/utosi.c +++ b/sys/contrib/dev/acpica/components/utilities/utosi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -222,6 +222,7 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] = {"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1}, /* Windows 10 version 1903 - Added 08/2019 */ {"Windows 2020", NULL, 0, ACPI_OSI_WIN_10_20H1}, /* Windows 10 version 2004 - Added 08/2021 */ {"Windows 2021", NULL, 0, ACPI_OSI_WIN_11}, /* Windows 11 - Added 01/2022 */ + {"Windows 2022", NULL, 0, ACPI_OSI_WIN_11_22H2}, /* Windows 11 version 22H2 - Added 04/2024 */ /* Feature Group Strings */ diff --git a/sys/contrib/dev/acpica/components/utilities/utownerid.c b/sys/contrib/dev/acpica/components/utilities/utownerid.c index 11853e48c271..7e39b7851af4 100644 --- a/sys/contrib/dev/acpica/components/utilities/utownerid.c +++ b/sys/contrib/dev/acpica/components/utilities/utownerid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utpredef.c b/sys/contrib/dev/acpica/components/utilities/utpredef.c index 5c3562846235..23e6606d167c 100644 --- a/sys/contrib/dev/acpica/components/utilities/utpredef.c +++ b/sys/contrib/dev/acpica/components/utilities/utpredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utresdecode.c b/sys/contrib/dev/acpica/components/utilities/utresdecode.c index 54452852300d..d14259911a07 100644 --- a/sys/contrib/dev/acpica/components/utilities/utresdecode.c +++ b/sys/contrib/dev/acpica/components/utilities/utresdecode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -467,4 +467,17 @@ const char *AcpiGbl_PtypDecode[] = "Input Schmitt Trigger", }; +const char *AcpiGbl_ClockInputMode[] = +{ + "Fixed", + "Variable", +}; + +const char *AcpiGbl_ClockInputScale[] = +{ + "Hz", + "KHz", + "MHz", +}; + #endif diff --git a/sys/contrib/dev/acpica/components/utilities/utresrc.c b/sys/contrib/dev/acpica/components/utilities/utresrc.c index ec4afc7649e8..109395435d45 100644 --- a/sys/contrib/dev/acpica/components/utilities/utresrc.c +++ b/sys/contrib/dev/acpica/components/utilities/utresrc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -204,6 +204,8 @@ const UINT8 AcpiGbl_ResourceAmlSizes[] = ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP), ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP_FUNCTION), ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP_CONFIG), + ACPI_AML_SIZE_LARGE (AML_RESOURCE_CLOCK_INPUT), + }; const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[] = @@ -264,6 +266,7 @@ static const UINT8 AcpiGbl_ResourceTypes[] = ACPI_VARIABLE_LENGTH, /* 10 PinGroup */ ACPI_VARIABLE_LENGTH, /* 11 PinGroupFunction */ ACPI_VARIABLE_LENGTH, /* 12 PinGroupConfig */ + ACPI_VARIABLE_LENGTH, /* 13 ClockInput */ }; diff --git a/sys/contrib/dev/acpica/components/utilities/utstate.c b/sys/contrib/dev/acpica/components/utilities/utstate.c index 22b988fed224..02fec7d15bf5 100644 --- a/sys/contrib/dev/acpica/components/utilities/utstate.c +++ b/sys/contrib/dev/acpica/components/utilities/utstate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utstring.c b/sys/contrib/dev/acpica/components/utilities/utstring.c index dcbdc6d9edc6..59e34e7c8a79 100644 --- a/sys/contrib/dev/acpica/components/utilities/utstring.c +++ b/sys/contrib/dev/acpica/components/utilities/utstring.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -308,7 +308,7 @@ AcpiUtRepairName ( return; } - ACPI_COPY_NAMESEG (&OriginalName, Name); + ACPI_COPY_NAMESEG (&OriginalName, &Name[0]); /* Check each character in the name */ @@ -321,10 +321,10 @@ AcpiUtRepairName ( /* * Replace a bad character with something printable, yet technically - * still invalid. This prevents any collisions with existing "good" + * "odd". This prevents any collisions with existing "good" * names in the namespace. */ - Name[i] = '*'; + Name[i] = '_'; FoundBadChar = TRUE; } @@ -335,8 +335,8 @@ AcpiUtRepairName ( if (!AcpiGbl_EnableInterpreterSlack) { ACPI_WARNING ((AE_INFO, - "Invalid character(s) in name (0x%.8X), repaired: [%4.4s]", - OriginalName, Name)); + "Invalid character(s) in name (0x%.8X) %p, repaired: [%4.4s]", + OriginalName, Name, &Name[0])); } else { diff --git a/sys/contrib/dev/acpica/components/utilities/utstrsuppt.c b/sys/contrib/dev/acpica/components/utilities/utstrsuppt.c index 3ca780ea0b33..1537d8a02949 100644 --- a/sys/contrib/dev/acpica/components/utilities/utstrsuppt.c +++ b/sys/contrib/dev/acpica/components/utilities/utstrsuppt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c b/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c index e726c41bab0b..2683c37c35db 100644 --- a/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c +++ b/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/uttrack.c b/sys/contrib/dev/acpica/components/utilities/uttrack.c index 5343b3074364..2c60c1c7b1f1 100644 --- a/sys/contrib/dev/acpica/components/utilities/uttrack.c +++ b/sys/contrib/dev/acpica/components/utilities/uttrack.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utuuid.c b/sys/contrib/dev/acpica/components/utilities/utuuid.c index c13e3ea917ec..669cce69b1f3 100644 --- a/sys/contrib/dev/acpica/components/utilities/utuuid.c +++ b/sys/contrib/dev/acpica/components/utilities/utuuid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utxface.c b/sys/contrib/dev/acpica/components/utilities/utxface.c index 9631bb7c8922..9b5f8b3c9d84 100644 --- a/sys/contrib/dev/acpica/components/utilities/utxface.c +++ b/sys/contrib/dev/acpica/components/utilities/utxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utxferror.c b/sys/contrib/dev/acpica/components/utilities/utxferror.c index e30c2b751f56..08a3ab986c3f 100644 --- a/sys/contrib/dev/acpica/components/utilities/utxferror.c +++ b/sys/contrib/dev/acpica/components/utilities/utxferror.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/components/utilities/utxfinit.c b/sys/contrib/dev/acpica/components/utilities/utxfinit.c index 4cd977ebdaa1..f295471031d0 100644 --- a/sys/contrib/dev/acpica/components/utilities/utxfinit.c +++ b/sys/contrib/dev/acpica/components/utilities/utxfinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -276,6 +276,20 @@ AcpiEnableSubsystem ( */ AcpiGbl_EarlyInitialization = FALSE; + /* + * Obtain a permanent mapping for the FACS. This is required for the + * Global Lock and the Firmware Waking Vector + */ + if (!(Flags & ACPI_NO_FACS_INIT)) + { + Status = AcpiTbInitializeFacs (); + if (ACPI_FAILURE (Status)) + { + ACPI_WARNING ((AE_INFO, "Could not map the FACS table")); + return_ACPI_STATUS (Status); + } + } + #if (!ACPI_REDUCED_HARDWARE) /* Enable ACPI mode */ @@ -295,20 +309,6 @@ AcpiEnableSubsystem ( } /* - * Obtain a permanent mapping for the FACS. This is required for the - * Global Lock and the Firmware Waking Vector - */ - if (!(Flags & ACPI_NO_FACS_INIT)) - { - Status = AcpiTbInitializeFacs (); - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, "Could not map the FACS table")); - return_ACPI_STATUS (Status); - } - } - - /* * Initialize ACPI Event handling (Fixed and General Purpose) * * Note1: We must have the hardware and events initialized before we can diff --git a/sys/contrib/dev/acpica/components/utilities/utxfmutex.c b/sys/contrib/dev/acpica/components/utilities/utxfmutex.c index 104c4ebb0f43..595904977f23 100644 --- a/sys/contrib/dev/acpica/components/utilities/utxfmutex.c +++ b/sys/contrib/dev/acpica/components/utilities/utxfmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acapps.h b/sys/contrib/dev/acpica/include/acapps.h index 382ab1700b34..ccaea124afb1 100644 --- a/sys/contrib/dev/acpica/include/acapps.h +++ b/sys/contrib/dev/acpica/include/acapps.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -159,7 +159,7 @@ /* Common info for tool signons */ #define ACPICA_NAME "Intel ACPI Component Architecture" -#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2022 Intel Corporation" +#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2025 Intel Corporation" #if ACPI_MACHINE_WIDTH == 64 #define ACPI_WIDTH " (64-bit version)" diff --git a/sys/contrib/dev/acpica/include/acbuffer.h b/sys/contrib/dev/acpica/include/acbuffer.h index 0739feb52817..682ddcd72625 100644 --- a/sys/contrib/dev/acpica/include/acbuffer.h +++ b/sys/contrib/dev/acpica/include/acbuffer.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acclib.h b/sys/contrib/dev/acpica/include/acclib.h index 75c48119cab7..3960ffd2582e 100644 --- a/sys/contrib/dev/acpica/include/acclib.h +++ b/sys/contrib/dev/acpica/include/acclib.h @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/accommon.h b/sys/contrib/dev/acpica/include/accommon.h index c620e0d6e68e..10a39803842b 100644 --- a/sys/contrib/dev/acpica/include/accommon.h +++ b/sys/contrib/dev/acpica/include/accommon.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acconfig.h b/sys/contrib/dev/acpica/include/acconfig.h index 8ba7dc28473a..983dc3021185 100644 --- a/sys/contrib/dev/acpica/include/acconfig.h +++ b/sys/contrib/dev/acpica/include/acconfig.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -210,7 +210,6 @@ * General Purpose Events (GPEs) * Global Lock * ACPI PM timer - * FACS table (Waking vectors and Global Lock) */ #ifndef ACPI_REDUCED_HARDWARE #define ACPI_REDUCED_HARDWARE FALSE @@ -335,6 +334,8 @@ #define ACPI_PRM_INPUT_BUFFER_SIZE 26 +#define ACPI_FFH_INPUT_BUFFER_SIZE 256 + /* _SxD and _SxW control methods */ #define ACPI_NUM_SxD_METHODS 4 diff --git a/sys/contrib/dev/acpica/include/acconvert.h b/sys/contrib/dev/acpica/include/acconvert.h index 048fd53e4de2..9dedc51a7ef9 100644 --- a/sys/contrib/dev/acpica/include/acconvert.h +++ b/sys/contrib/dev/acpica/include/acconvert.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acdebug.h b/sys/contrib/dev/acpica/include/acdebug.h index 107a8df906c2..63f39051a8ac 100644 --- a/sys/contrib/dev/acpica/include/acdebug.h +++ b/sys/contrib/dev/acpica/include/acdebug.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -619,4 +619,8 @@ AcpiDbUint32ToHexString ( UINT32 Value, char *Buffer); +void +AcpiDbGenerateInterrupt ( + char *GsivArg); + #endif /* __ACDEBUG_H__ */ diff --git a/sys/contrib/dev/acpica/include/acdisasm.h b/sys/contrib/dev/acpica/include/acdisasm.h index a374b7d4bf89..ab092d6aec22 100644 --- a/sys/contrib/dev/acpica/include/acdisasm.h +++ b/sys/contrib/dev/acpica/include/acdisasm.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -223,9 +223,14 @@ typedef enum ACPI_DMT_UINT64, ACPI_DMT_BUF7, ACPI_DMT_BUF10, + ACPI_DMT_BUF11, ACPI_DMT_BUF12, ACPI_DMT_BUF16, ACPI_DMT_BUF18, + ACPI_DMT_BUF24, + ACPI_DMT_BUF26, + ACPI_DMT_BUF32, + ACPI_DMT_BUF112, ACPI_DMT_BUF128, ACPI_DMT_SIG, ACPI_DMT_STRING, @@ -260,11 +265,14 @@ typedef enum ACPI_DMT_AEST_XRUPT, ACPI_DMT_AGDI, ACPI_DMT_ASF, + ACPI_DMT_ASPT, + ACPI_DMT_CDAT, ACPI_DMT_CEDT, ACPI_DMT_DMAR, ACPI_DMT_DMAR_SCOPE, ACPI_DMT_EINJACT, ACPI_DMT_EINJINST, + ACPI_DMT_ERDT, ACPI_DMT_ERSTACT, ACPI_DMT_ERSTINST, ACPI_DMT_FADTPM, @@ -279,20 +287,16 @@ typedef enum ACPI_DMT_IVRS_UNTERMINATED_STRING, ACPI_DMT_LPIT, ACPI_DMT_MADT, + ACPI_DMT_MPAM_LOCATOR, ACPI_DMT_NFIT, - ACPI_DMT_NHLT1, - ACPI_DMT_NHLT1a, - ACPI_DMT_NHLT1b, - ACPI_DMT_NHLT1c, - ACPI_DMT_NHLT1d, - ACPI_DMT_NHLT1e, - ACPI_DMT_NHLT1f, ACPI_DMT_PCCT, ACPI_DMT_PHAT, ACPI_DMT_PMTT, ACPI_DMT_PMTT_VENDOR, ACPI_DMT_PPTT, ACPI_DMT_RGRT, + ACPI_DMT_RHCT, + ACPI_DMT_RIMT, ACPI_DMT_SDEI, ACPI_DMT_SDEV, ACPI_DMT_SLIC, @@ -385,9 +389,17 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGenRsrc[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestMemError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestSmmuError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorError[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorV2Error[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestPCIeError[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestProxyError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXfaceHeader[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface4k[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface16k[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface64k[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXruptV2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAgdi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoApmtNode[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[]; @@ -398,14 +410,31 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAspt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsptHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAspt0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAspt1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAspt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCcel[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdatTableHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdatHeader[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat2[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat3[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat4[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdat5[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCdatEntries[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedtHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1_te[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2_te[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[]; @@ -428,6 +457,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar5[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar6[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0a[]; @@ -437,6 +467,24 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCacd[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCacdX2apic[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCarc[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCard[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCmrc[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtCmrd[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacd[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacdPath[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtDacdScope[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbad[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbrd[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtIbrdCorrFactor[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMarc[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMmrc[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtMmrcCorrFactor[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoErdtRmdd[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoErst[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[]; @@ -529,22 +577,50 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11a[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt13[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt17[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt18[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt19[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt20[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt21[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt22[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt23[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt24[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt25[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt26[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt27[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt128[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1A[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1B[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1C[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1D[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1E[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1F[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1G[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1Deps[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpam2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMrrm[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoMrrm0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit[]; @@ -560,24 +636,6 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt2[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt4[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5c[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6b[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7b[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[]; @@ -610,8 +668,26 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRas2[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRas2PccDesc[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhct[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctNodeHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsa1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsaPad[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctCmo1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctMmu1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo2[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtNodeHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIommu[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIommuWire[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPcieRc[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtIdMapping[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPlatDev[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRimtPlatDevPad[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[]; @@ -644,6 +720,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat6[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat7[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[]; @@ -748,6 +825,18 @@ AcpiDmDumpAsf ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpAspt ( + ACPI_TABLE_HEADER *Table); + +void +AcpiDmDumpCcel ( + ACPI_TABLE_HEADER *Table); + +void +AcpiDmDumpCdat ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpCedt ( ACPI_TABLE_HEADER *Table); @@ -776,6 +865,10 @@ AcpiDmDumpEinj ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpErdt ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpErst ( ACPI_TABLE_HEADER *Table); @@ -820,19 +913,23 @@ AcpiDmDumpMcfg ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpMpam ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpMpst ( ACPI_TABLE_HEADER *Table); void -AcpiDmDumpMsct ( +AcpiDmDumpMrrm ( ACPI_TABLE_HEADER *Table); void -AcpiDmDumpNfit ( +AcpiDmDumpMsct ( ACPI_TABLE_HEADER *Table); void -AcpiDmDumpNhlt ( +AcpiDmDumpNfit ( ACPI_TABLE_HEADER *Table); void @@ -860,9 +957,21 @@ AcpiDmDumpPrmt ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpRas2 ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpRgrt ( ACPI_TABLE_HEADER *Table); +void +AcpiDmDumpRhct ( + ACPI_TABLE_HEADER *Table); + +void +AcpiDmDumpRimt ( + ACPI_TABLE_HEADER *Table); + UINT32 AcpiDmDumpRsdp ( ACPI_TABLE_HEADER *Table); @@ -1304,6 +1413,12 @@ AcpiDmVendorCommon ( UINT32 Length, UINT32 Level); +void +AcpiDmClockInputDescriptor ( + ACPI_OP_WALK_INFO *Info, + AML_RESOURCE *Resource, + UINT32 Length, + UINT32 Level); /* * dmresrcs diff --git a/sys/contrib/dev/acpica/include/acdispat.h b/sys/contrib/dev/acpica/include/acdispat.h index 2c44c9f19613..0573e5817dff 100644 --- a/sys/contrib/dev/acpica/include/acdispat.h +++ b/sys/contrib/dev/acpica/include/acdispat.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acevents.h b/sys/contrib/dev/acpica/include/acevents.h index f8c5d77699a0..22eff360559c 100644 --- a/sys/contrib/dev/acpica/include/acevents.h +++ b/sys/contrib/dev/acpica/include/acevents.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acexcep.h b/sys/contrib/dev/acpica/include/acexcep.h index 92e949722940..7216e0d49148 100644 --- a/sys/contrib/dev/acpica/include/acexcep.h +++ b/sys/contrib/dev/acpica/include/acexcep.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -322,8 +322,11 @@ typedef struct acpi_exception_info #define AE_AML_TARGET_TYPE EXCEP_AML (0x0023) #define AE_AML_PROTOCOL EXCEP_AML (0x0024) #define AE_AML_BUFFER_LENGTH EXCEP_AML (0x0025) +#define AE_AML_TOO_FEW_ARGUMENTS EXCEP_AML (0x0026) +#define AE_AML_TOO_MANY_ARGUMENTS EXCEP_AML (0x0027) -#define AE_CODE_AML_MAX 0x0025 + +#define AE_CODE_AML_MAX 0x0027 /* @@ -456,7 +459,9 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Aml[] = EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved"), EXCEP_TXT ("AE_AML_TARGET_TYPE", "A target operand of an incorrect type was encountered"), EXCEP_TXT ("AE_AML_PROTOCOL", "Violation of a fixed ACPI protocol"), - EXCEP_TXT ("AE_AML_BUFFER_LENGTH", "The length of the buffer is invalid/incorrect") + EXCEP_TXT ("AE_AML_BUFFER_LENGTH", "The length of the buffer is invalid/incorrect"), + EXCEP_TXT ("AE_AML_TOO_FEW_ARGUMENTS", "There are fewer than expected method arguments"), + EXCEP_TXT ("AE_AML_TOO_MANY_ARGUMENTS", "There are too many arguments for this method") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] = diff --git a/sys/contrib/dev/acpica/include/acglobal.h b/sys/contrib/dev/acpica/include/acglobal.h index b8831b467232..02167c3af092 100644 --- a/sys/contrib/dev/acpica/include/acglobal.h +++ b/sys/contrib/dev/acpica/include/acglobal.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -167,15 +167,12 @@ ACPI_GLOBAL (ACPI_TABLE_LIST, AcpiGbl_RootTableList); ACPI_GLOBAL (ACPI_TABLE_HEADER *, AcpiGbl_DSDT); ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader); +ACPI_INIT_GLOBAL (char *, AcpiGbl_CDAT, NULL); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX); - -#if (!ACPI_REDUCED_HARDWARE) -ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS); - -#endif /* !ACPI_REDUCED_HARDWARE */ +ACPI_INIT_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS, NULL); /* These addresses are calculated from the FADT Event Block addresses */ @@ -267,6 +264,7 @@ ACPI_GLOBAL (ACPI_TABLE_HANDLER, AcpiGbl_TableHandler); ACPI_GLOBAL (void *, AcpiGbl_TableHandlerContext); ACPI_GLOBAL (ACPI_INTERFACE_HANDLER, AcpiGbl_InterfaceHandler); ACPI_GLOBAL (ACPI_SCI_HANDLER_INFO *, AcpiGbl_SciHandlerList); +ACPI_GLOBAL (ACPI_GED_HANDLER_INFO *, AcpiGbl_GedHandlerList); /* Owner ID support */ diff --git a/sys/contrib/dev/acpica/include/achware.h b/sys/contrib/dev/acpica/include/achware.h index 256008c74c7a..46efffb50708 100644 --- a/sys/contrib/dev/acpica/include/achware.h +++ b/sys/contrib/dev/acpica/include/achware.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acinterp.h b/sys/contrib/dev/acpica/include/acinterp.h index d9cec3455d7b..b7f9e8f615e4 100644 --- a/sys/contrib/dev/acpica/include/acinterp.h +++ b/sys/contrib/dev/acpica/include/acinterp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -280,6 +280,10 @@ AcpiExTracePoint ( UINT8 *Aml, char *Pathname); +void +AcpiExTraceArgs( + ACPI_OPERAND_OBJECT **Params, + UINT32 Count); /* * exfield - ACPI AML (p-code) execution - field manipulation diff --git a/sys/contrib/dev/acpica/include/aclocal.h b/sys/contrib/dev/acpica/include/aclocal.h index 74eb6e27f08c..56ce42ba89fc 100644 --- a/sys/contrib/dev/acpica/include/aclocal.h +++ b/sys/contrib/dev/acpica/include/aclocal.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -480,7 +480,7 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( */ typedef struct acpi_name_info { - char Name[ACPI_NAMESEG_SIZE]; + char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; UINT16 ArgumentList; UINT8 ExpectedBtypes; @@ -568,7 +568,7 @@ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( typedef struct acpi_simple_repair_info { - char Name[ACPI_NAMESEG_SIZE]; + char Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; UINT32 UnexpectedBtypes; UINT32 PackageIndex; ACPI_OBJECT_CONVERTER ObjectConverter; @@ -767,6 +767,15 @@ typedef struct acpi_field_info } ACPI_FIELD_INFO; +/* Information about the interrupt ID and _EVT of a GED device */ + +typedef struct acpi_ged_handler_info +{ + struct acpi_ged_handler_info *Next; + UINT32 IntId; /* The interrupt ID that triggers the execution of the EvtMethod. */ + ACPI_NAMESPACE_NODE *EvtMethod; /* The _EVT method to be executed when an interrupt with ID = IntID is received */ + +} ACPI_GED_HANDLER_INFO; /***************************************************************************** * @@ -786,13 +795,13 @@ typedef struct acpi_field_info UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Flags; \ UINT16 Value; \ - UINT16 State; + UINT16 State /* There are 2 bytes available here until the next natural alignment boundary */ typedef struct acpi_common_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; } ACPI_COMMON_STATE; @@ -801,7 +810,7 @@ typedef struct acpi_common_state */ typedef struct acpi_update_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; union acpi_operand_object *Object; } ACPI_UPDATE_STATE; @@ -812,7 +821,7 @@ typedef struct acpi_update_state */ typedef struct acpi_pkg_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; UINT32 Index; union acpi_operand_object *SourceObject; union acpi_operand_object *DestObject; @@ -829,7 +838,7 @@ typedef struct acpi_pkg_state */ typedef struct acpi_control_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; UINT16 Opcode; union acpi_parse_object *PredicateOp; UINT8 *AmlPredicateStart; /* Start of if/while predicate */ @@ -844,7 +853,7 @@ typedef struct acpi_control_state */ typedef struct acpi_scope_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; ACPI_NAMESPACE_NODE *Node; } ACPI_SCOPE_STATE; @@ -852,7 +861,7 @@ typedef struct acpi_scope_state typedef struct acpi_pscope_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; UINT32 ArgCount; /* Number of fixed arguments */ union acpi_parse_object *Op; /* Current op being parsed */ UINT8 *ArgEnd; /* Current argument end */ @@ -868,7 +877,7 @@ typedef struct acpi_pscope_state */ typedef struct acpi_thread_state { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; UINT8 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */ struct acpi_walk_state *WalkStateList; /* Head of list of WalkStates for this thread */ union acpi_operand_object *AcquiredMutexList; /* List of all currently acquired mutexes */ @@ -883,7 +892,7 @@ typedef struct acpi_thread_state */ typedef struct acpi_result_values { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; union acpi_operand_object *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM]; } ACPI_RESULT_VALUES; @@ -914,7 +923,7 @@ typedef struct acpi_global_notify_handler */ typedef struct acpi_notify_info { - ACPI_STATE_COMMON + ACPI_STATE_COMMON; UINT8 HandlerListId; ACPI_NAMESPACE_NODE *Node; union acpi_operand_object *HandlerListHead; @@ -1403,6 +1412,8 @@ typedef struct acpi_port_info #define ACPI_ADDRESS_TYPE_IO_RANGE 1 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2 +#define ACPI_ADDRESS_TYPE_PCC_NUMBER 0xA + /* Resource descriptor types and masks */ #define ACPI_RESOURCE_NAME_LARGE 0x80 @@ -1452,7 +1463,8 @@ typedef struct acpi_port_info #define ACPI_RESOURCE_NAME_PIN_GROUP 0x90 #define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION 0x91 #define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG 0x92 -#define ACPI_RESOURCE_NAME_LARGE_MAX 0x92 +#define ACPI_RESOURCE_NAME_CLOCK_INPUT 0x93 +#define ACPI_RESOURCE_NAME_LARGE_MAX 0x94 /***************************************************************************** diff --git a/sys/contrib/dev/acpica/include/acmacros.h b/sys/contrib/dev/acpica/include/acmacros.h index 11fd47cc3cab..eabe403b3998 100644 --- a/sys/contrib/dev/acpica/include/acmacros.h +++ b/sys/contrib/dev/acpica/include/acmacros.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acnames.h b/sys/contrib/dev/acpica/include/acnames.h index 846d192b229d..070e318fb8cc 100644 --- a/sys/contrib/dev/acpica/include/acnames.h +++ b/sys/contrib/dev/acpica/include/acnames.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -164,6 +164,7 @@ #define METHOD_NAME__DDN "_DDN" #define METHOD_NAME__DIS "_DIS" #define METHOD_NAME__DMA "_DMA" +#define METHOD_NAME__EVT "_EVT" #define METHOD_NAME__HID "_HID" #define METHOD_NAME__INI "_INI" #define METHOD_NAME__PLD "_PLD" diff --git a/sys/contrib/dev/acpica/include/acnamesp.h b/sys/contrib/dev/acpica/include/acnamesp.h index 7b8d069d6b26..41f704b3d74b 100644 --- a/sys/contrib/dev/acpica/include/acnamesp.h +++ b/sys/contrib/dev/acpica/include/acnamesp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acobject.h b/sys/contrib/dev/acpica/include/acobject.h index b2c9dd9b7a0f..95be1a95b4c7 100644 --- a/sys/contrib/dev/acpica/include/acobject.h +++ b/sys/contrib/dev/acpica/include/acobject.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -191,7 +191,7 @@ UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Type; /* ACPI_OBJECT_TYPE */\ UINT16 ReferenceCount; /* For object deletion management */\ - UINT8 Flags; + UINT8 Flags /* * Note: There are 3 bytes available here before the * next natural alignment boundary (for both 32/64 cases) @@ -216,14 +216,14 @@ typedef struct acpi_object_common { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; } ACPI_OBJECT_COMMON; typedef struct acpi_object_integer { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 Fill[3]; /* Prevent warning on some compilers */ UINT64 Value; @@ -238,23 +238,23 @@ typedef struct acpi_object_integer */ #define ACPI_COMMON_BUFFER_INFO(_Type) \ _Type *Pointer; \ - UINT32 Length; + UINT32 Length /* Null terminated, ASCII characters only */ typedef struct acpi_object_string { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_BUFFER_INFO (char) /* String in AML stream or allocated string */ + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_BUFFER_INFO(char); /* String in AML stream or allocated string */ } ACPI_OBJECT_STRING; typedef struct acpi_object_buffer { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_BUFFER_INFO (UINT8) /* Buffer in AML stream or allocated buffer */ + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_BUFFER_INFO(UINT8); /* Buffer in AML stream or allocated buffer */ UINT32 AmlLength; UINT8 *AmlStart; ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ @@ -264,7 +264,7 @@ typedef struct acpi_object_buffer typedef struct acpi_object_package { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ union acpi_operand_object **Elements; /* Array of pointers to AcpiObjects */ UINT8 *AmlStart; @@ -282,7 +282,7 @@ typedef struct acpi_object_package typedef struct acpi_object_event { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; ACPI_SEMAPHORE OsSemaphore; /* Actual OS synchronization object */ } ACPI_OBJECT_EVENT; @@ -290,7 +290,7 @@ typedef struct acpi_object_event typedef struct acpi_object_mutex { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 SyncLevel; /* 0-15, specified in Mutex() call */ UINT16 AcquisitionDepth; /* Allow multiple Acquires, same thread */ ACPI_MUTEX OsMutex; /* Actual OS synchronization object */ @@ -306,7 +306,7 @@ typedef struct acpi_object_mutex typedef struct acpi_object_region { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 SpaceId; ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ union acpi_operand_object *Handler; /* Handler for region access */ @@ -320,7 +320,7 @@ typedef struct acpi_object_region typedef struct acpi_object_method { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 InfoFlags; UINT8 ParamCount; UINT8 SyncLevel; @@ -360,22 +360,22 @@ typedef struct acpi_object_method */ #define ACPI_COMMON_NOTIFY_INFO \ union acpi_operand_object *NotifyList[2]; /* Handlers for system/device notifies */\ - union acpi_operand_object *Handler; /* Handler for Address space */ + union acpi_operand_object *Handler /* Handler for Address space */ /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ typedef struct acpi_object_notify_common { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_NOTIFY_INFO; } ACPI_OBJECT_NOTIFY_COMMON; typedef struct acpi_object_device { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_NOTIFY_INFO; ACPI_GPE_BLOCK_INFO *GpeBlock; } ACPI_OBJECT_DEVICE; @@ -383,8 +383,8 @@ typedef struct acpi_object_device typedef struct acpi_object_power_resource { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_NOTIFY_INFO; UINT32 SystemLevel; UINT32 ResourceOrder; @@ -393,13 +393,13 @@ typedef struct acpi_object_power_resource typedef struct acpi_object_processor { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ UINT8 ProcId; UINT8 Length; - ACPI_COMMON_NOTIFY_INFO + ACPI_COMMON_NOTIFY_INFO; ACPI_IO_ADDRESS Address; } ACPI_OBJECT_PROCESSOR; @@ -407,8 +407,8 @@ typedef struct acpi_object_processor typedef struct acpi_object_thermal_zone { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_NOTIFY_INFO; } ACPI_OBJECT_THERMAL_ZONE; @@ -433,14 +433,14 @@ typedef struct acpi_object_thermal_zone UINT32 BaseByteOffset; /* Byte offset within containing object */\ UINT32 Value; /* Value to store into the Bank or Index register */\ UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ - UINT8 AccessLength; /* For serial regions/fields */ + UINT8 AccessLength /* For serial regions/fields */ /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ typedef struct acpi_object_field_common { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_FIELD_INFO; union acpi_operand_object *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */ } ACPI_OBJECT_FIELD_COMMON; @@ -448,8 +448,8 @@ typedef struct acpi_object_field_common typedef struct acpi_object_region_field { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_FIELD_INFO; UINT16 ResourceLength; union acpi_operand_object *RegionObj; /* Containing OpRegion object */ UINT8 *ResourceBuffer; /* ResourceTemplate for serial regions/fields */ @@ -461,8 +461,8 @@ typedef struct acpi_object_region_field typedef struct acpi_object_bank_field { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_FIELD_INFO; union acpi_operand_object *RegionObj; /* Containing OpRegion object */ union acpi_operand_object *BankObj; /* BankSelect Register object */ @@ -471,8 +471,8 @@ typedef struct acpi_object_bank_field typedef struct acpi_object_index_field { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_FIELD_INFO; /* * No "RegionObj" pointer needed since the Index and Data registers @@ -488,8 +488,8 @@ typedef struct acpi_object_index_field typedef struct acpi_object_buffer_field { - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO + ACPI_OBJECT_COMMON_HEADER; + ACPI_COMMON_FIELD_INFO; BOOLEAN IsCreateField; /* Special case for objects created by CreateField() */ union acpi_operand_object *BufferObj; /* Containing Buffer object */ @@ -504,7 +504,7 @@ typedef struct acpi_object_buffer_field typedef struct acpi_object_notify_handler { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; ACPI_NAMESPACE_NODE *Node; /* Parent device */ UINT32 HandlerType; /* Type: Device/System/Both */ ACPI_NOTIFY_HANDLER Handler; /* Handler address */ @@ -516,7 +516,7 @@ typedef struct acpi_object_notify_handler typedef struct acpi_object_addr_handler { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 SpaceId; UINT8 HandlerFlags; ACPI_ADR_SPACE_HANDLER Handler; @@ -547,7 +547,7 @@ typedef struct acpi_object_addr_handler */ typedef struct acpi_object_reference { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; UINT8 Class; /* Reference Class */ UINT8 TargetType; /* Used for Index Op */ UINT8 Resolved; /* Reference has been resolved to a value */ @@ -585,7 +585,7 @@ typedef enum */ typedef struct acpi_object_extra { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ ACPI_NAMESPACE_NODE *ScopeNode; void *RegionContext; /* Region-specific data */ @@ -599,7 +599,7 @@ typedef struct acpi_object_extra typedef struct acpi_object_data { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; ACPI_OBJECT_HANDLER Handler; void *Pointer; @@ -610,7 +610,7 @@ typedef struct acpi_object_data typedef struct acpi_object_cache_list { - ACPI_OBJECT_COMMON_HEADER + ACPI_OBJECT_COMMON_HEADER; union acpi_operand_object *Next; /* Link for object cache and internal lists*/ } ACPI_OBJECT_CACHE_LIST; diff --git a/sys/contrib/dev/acpica/include/acopcode.h b/sys/contrib/dev/acpica/include/acopcode.h index 7e54a47f7063..c8d17c3554d0 100644 --- a/sys/contrib/dev/acpica/include/acopcode.h +++ b/sys/contrib/dev/acpica/include/acopcode.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acoutput.h b/sys/contrib/dev/acpica/include/acoutput.h index cd3d26d52a22..49a466dba33a 100644 --- a/sys/contrib/dev/acpica/include/acoutput.h +++ b/sys/contrib/dev/acpica/include/acoutput.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -336,6 +336,7 @@ */ #ifndef ACPI_NO_ERROR_MESSAGES #define AE_INFO _AcpiModuleName, __LINE__ +#define ACPI_ONCE(_fn, _plist) { static char _done; if (!_done) { _done = 1; _fn _plist; } } /* * Error reporting. Callers module and line number are inserted by AE_INFO, @@ -344,8 +345,10 @@ */ #define ACPI_INFO(plist) AcpiInfo plist #define ACPI_WARNING(plist) AcpiWarning plist +#define ACPI_WARNING_ONCE(plist) ACPI_ONCE(AcpiWarning, plist) #define ACPI_EXCEPTION(plist) AcpiException plist #define ACPI_ERROR(plist) AcpiError plist +#define ACPI_ERROR_ONCE(plist) ACPI_ONCE(AcpiError, plist) #define ACPI_BIOS_WARNING(plist) AcpiBiosWarning plist #define ACPI_BIOS_EXCEPTION(plist) AcpiBiosException plist #define ACPI_BIOS_ERROR(plist) AcpiBiosError plist @@ -357,8 +360,10 @@ #define ACPI_INFO(plist) #define ACPI_WARNING(plist) +#define ACPI_WARNING_ONCE(plist) #define ACPI_EXCEPTION(plist) #define ACPI_ERROR(plist) +#define ACPI_ERROR_ONCE(plist) #define ACPI_BIOS_WARNING(plist) #define ACPI_BIOS_EXCEPTION(plist) #define ACPI_BIOS_ERROR(plist) diff --git a/sys/contrib/dev/acpica/include/acparser.h b/sys/contrib/dev/acpica/include/acparser.h index 4437d612ea63..8b3d3702f4a2 100644 --- a/sys/contrib/dev/acpica/include/acparser.h +++ b/sys/contrib/dev/acpica/include/acparser.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acpi.h b/sys/contrib/dev/acpica/include/acpi.h index a07055d2e895..07e5e93e2309 100644 --- a/sys/contrib/dev/acpica/include/acpi.h +++ b/sys/contrib/dev/acpica/include/acpi.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acpiosxf.h b/sys/contrib/dev/acpica/include/acpiosxf.h index 98b8ad6e880b..77a22eee7442 100644 --- a/sys/contrib/dev/acpica/include/acpiosxf.h +++ b/sys/contrib/dev/acpica/include/acpiosxf.h @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h index 6f992916708e..b5961e21bb9b 100644 --- a/sys/contrib/dev/acpica/include/acpixf.h +++ b/sys/contrib/dev/acpica/include/acpixf.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20220331 +#define ACPI_CA_VERSION 0x20250807 #include <contrib/dev/acpica/include/acconfig.h> #include <contrib/dev/acpica/include/actypes.h> @@ -358,6 +358,12 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData, 0); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ReducedHardware, FALSE); /* + * ACPI Global Lock is mainly used for systems with SMM, so no-SMM systems + * (such as LoongArch) may not have and not use Global Lock. + */ +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_UseGlobalLock, TRUE); + +/* * Maximum timeout for While() loop iterations before forced method abort. * This mechanism is intended to prevent infinite loops during interpreter * execution within a host kernel. @@ -770,7 +776,7 @@ ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS AcpiGetHandle ( ACPI_HANDLE Parent, - ACPI_STRING Pathname, + const char *Pathname, ACPI_HANDLE *RetHandle)) ACPI_EXTERNAL_RETURN_STATUS ( @@ -944,6 +950,21 @@ AcpiInstallAddressSpaceHandler ( ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS +AcpiInstallAddressSpaceHandlerNo_Reg( + ACPI_HANDLE Device, + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_ADR_SPACE_HANDLER Handler, + ACPI_ADR_SPACE_SETUP Setup, + void *Context)) + +ACPI_EXTERNAL_RETURN_STATUS ( +ACPI_STATUS +AcpiExecuteRegMethods ( + ACPI_HANDLE Device, + ACPI_ADR_SPACE_TYPE SpaceId)) + +ACPI_EXTERNAL_RETURN_STATUS ( +ACPI_STATUS AcpiRemoveAddressSpaceHandler ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, @@ -1280,7 +1301,7 @@ ACPI_STATUS AcpiLeaveSleepState ( UINT8 SleepState)) -ACPI_HW_DEPENDENT_RETURN_STATUS ( +ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS AcpiSetFirmwareWakingVector ( ACPI_PHYSICAL_ADDRESS PhysicalAddress, diff --git a/sys/contrib/dev/acpica/include/acpredef.h b/sys/contrib/dev/acpica/include/acpredef.h index 9ad8c0ffcc38..91fd49723b7f 100644 --- a/sys/contrib/dev/acpica/include/acpredef.h +++ b/sys/contrib/dev/acpica/include/acpredef.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -579,12 +579,15 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] = {{"_DOS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, + + { {"_DSC", METHOD_0ARGS, + METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_DSD", METHOD_0ARGS, /* ACPI 6.0 */ METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Buf, 1 Pkg */ PACKAGE_INFO (ACPI_PTYPE2_UUID_PAIR, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_PACKAGE, 1,0), - {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_PACKAGE), + {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY) | ARG_COUNT_IS_MINIMUM, METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */ {{"_DSS", METHOD_1ARGS (ACPI_TYPE_INTEGER), diff --git a/sys/contrib/dev/acpica/include/acresrc.h b/sys/contrib/dev/acpica/include/acresrc.h index 36eb9ba8dbbb..2e3c7d3d1d40 100644 --- a/sys/contrib/dev/acpica/include/acresrc.h +++ b/sys/contrib/dev/acpica/include/acresrc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -506,6 +506,7 @@ extern ACPI_RSCONVERT_INFO AcpiRsConvertPinConfig[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertPinGroup[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertPinGroupFunction[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertPinGroupConfig[]; +extern ACPI_RSCONVERT_INFO AcpiRsConvertClockInput[]; /* These resources require separate get/set tables */ @@ -562,6 +563,7 @@ extern ACPI_RSDUMP_INFO AcpiRsDumpPinConfig[]; extern ACPI_RSDUMP_INFO AcpiRsDumpPinGroup[]; extern ACPI_RSDUMP_INFO AcpiRsDumpPinGroupFunction[]; extern ACPI_RSDUMP_INFO AcpiRsDumpPinGroupConfig[]; +extern ACPI_RSDUMP_INFO AcpiRsDumpClockInput[]; #endif #endif /* __ACRESRC_H__ */ diff --git a/sys/contrib/dev/acpica/include/acrestyp.h b/sys/contrib/dev/acpica/include/acrestyp.h index f045c2000b71..ab48a3911ae6 100644 --- a/sys/contrib/dev/acpica/include/acrestyp.h +++ b/sys/contrib/dev/acpica/include/acrestyp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -290,7 +290,10 @@ typedef struct acpi_resource_irq UINT8 Shareable; UINT8 WakeCapable; UINT8 InterruptCount; - UINT8 Interrupts[1]; + union { + UINT8 Interrupt; + ACPI_FLEX_ARRAY(UINT8, Interrupts); + }; } ACPI_RESOURCE_IRQ; @@ -300,7 +303,10 @@ typedef struct acpi_resource_dma UINT8 BusMaster; UINT8 Transfer; UINT8 ChannelCount; - UINT8 Channels[1]; + union { + UINT8 Channel; + ACPI_FLEX_ARRAY(UINT8, Channels); + }; } ACPI_RESOURCE_DMA; @@ -357,7 +363,7 @@ typedef struct acpi_resource_fixed_dma typedef struct acpi_resource_vendor { UINT16 ByteLength; - UINT8 ByteData[1]; + UINT8 ByteData[]; } ACPI_RESOURCE_VENDOR; @@ -368,7 +374,7 @@ typedef struct acpi_resource_vendor_typed UINT16 ByteLength; UINT8 UuidSubtype; UINT8 Uuid[ACPI_UUID_LENGTH]; - UINT8 ByteData[1]; + UINT8 ByteData[]; } ACPI_RESOURCE_VENDOR_TYPED; @@ -538,7 +544,10 @@ typedef struct acpi_resource_extended_irq UINT8 WakeCapable; UINT8 InterruptCount; ACPI_RESOURCE_SOURCE ResourceSource; - UINT32 Interrupts[1]; + union { + UINT32 Interrupt; + ACPI_FLEX_ARRAY(UINT32, Interrupts); + }; } ACPI_RESOURCE_EXTENDED_IRQ; @@ -770,6 +779,16 @@ typedef struct acpi_resource_pin_config } ACPI_RESOURCE_PIN_CONFIG; +typedef struct acpi_resource_clock_input +{ + UINT8 RevisionId; + UINT8 Mode; + UINT8 Scale; + UINT16 FrequencyDivisor; + UINT32 FrequencyNumerator; + ACPI_RESOURCE_SOURCE ResourceSource; +} ACPI_RESOURCE_CLOCK_INPUT; + /* Values for PinConfigType field above */ #define ACPI_PIN_CONFIG_DEFAULT 0 @@ -853,7 +872,8 @@ typedef struct acpi_resource_pin_group_config #define ACPI_RESOURCE_TYPE_PIN_GROUP 22 /* ACPI 6.2 */ #define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION 23 /* ACPI 6.2 */ #define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG 24 /* ACPI 6.2 */ -#define ACPI_RESOURCE_TYPE_MAX 24 +#define ACPI_RESOURCE_TYPE_CLOCK_INPUT 25 /* ACPI 6.5 */ +#define ACPI_RESOURCE_TYPE_MAX 25 /* Master union for resource descriptors */ @@ -888,6 +908,7 @@ typedef union acpi_resource_data ACPI_RESOURCE_PIN_GROUP PinGroup; ACPI_RESOURCE_PIN_GROUP_FUNCTION PinGroupFunction; ACPI_RESOURCE_PIN_GROUP_CONFIG PinGroupConfig; + ACPI_RESOURCE_CLOCK_INPUT ClockInput; /* Common fields */ @@ -927,8 +948,10 @@ typedef struct acpi_pci_routing_table UINT32 Pin; UINT64 Address; /* here for 64-bit alignment */ UINT32 SourceIndex; - char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ - + union { + char Pad[4]; /* pad to 64 bits so sizeof() works in all cases */ + ACPI_FLEX_ARRAY(char, Source); + }; } ACPI_PCI_ROUTING_TABLE; #endif /* __ACRESTYP_H__ */ diff --git a/sys/contrib/dev/acpica/include/acstruct.h b/sys/contrib/dev/acpica/include/acstruct.h index d50c7a1b6468..b1c54f09fe55 100644 --- a/sys/contrib/dev/acpica/include/acstruct.h +++ b/sys/contrib/dev/acpica/include/acstruct.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/actables.h b/sys/contrib/dev/acpica/include/actables.h index 40b79a47c219..6f2cacbde3a1 100644 --- a/sys/contrib/dev/acpica/include/actables.h +++ b/sys/contrib/dev/acpica/include/actables.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -345,16 +345,6 @@ AcpiTbPrintTableHeader( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER *Header); -UINT8 -AcpiTbChecksum ( - UINT8 *Buffer, - UINT32 Length); - -ACPI_STATUS -AcpiTbVerifyChecksum ( - ACPI_TABLE_HEADER *Table, - UINT32 Length); - void AcpiTbCheckDsdtHeader ( void); diff --git a/sys/contrib/dev/acpica/include/actbinfo.h b/sys/contrib/dev/acpica/include/actbinfo.h index 633f7349b390..fdf2a989ef6b 100644 --- a/sys/contrib/dev/acpica/include/actbinfo.h +++ b/sys/contrib/dev/acpica/include/actbinfo.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -153,6 +153,7 @@ * Macros used to generate offsets to specific table fields */ #define ACPI_AGDI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_AGDI,f) +#define ACPI_ASPT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ASPT,f) #define ACPI_FACS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f) #define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) #define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) @@ -161,6 +162,7 @@ #define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f) #define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) #define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) +#define ACPI_CCEL_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CCEL,f) #define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f) #define ACPI_DBG2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBG2,f) #define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f) @@ -168,6 +170,7 @@ #define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f) #define ACPI_ECDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f) #define ACPI_EINJ_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f) +#define ACPI_ERDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ERDT,f) #define ACPI_ERST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f) #define ACPI_GTDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f) #define ACPI_HEST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f) @@ -179,14 +182,17 @@ #define ACPI_MCFG_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f) #define ACPI_MCHI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f) #define ACPI_MPST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f) +#define ACPI_MRRM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MRRM,f) #define ACPI_MSCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f) #define ACPI_NFIT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_NFIT,f) -#define ACPI_NHLT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_NHLT,f) #define ACPI_PCCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f) #define ACPI_PDTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PDTT,f) #define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f) #define ACPI_RASF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f) +#define ACPI_RAS2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RAS2,f) #define ACPI_RGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f) +#define ACPI_RHCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RHCT,f) +#define ACPI_RIMT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RIMT,f) #define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f) #define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f) #define ACPI_SDEI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f) @@ -222,9 +228,17 @@ #define ACPI_AEST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_MEMORY,f) #define ACPI_AEST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_SMMU,f) #define ACPI_AEST3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR,f) +#define ACPI_AEST3A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR_V2,f) #define ACPI_AEST4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_GIC,f) +#define ACPI_AEST5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_PCIE,f) +#define ACPI_AEST6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_PROXY,f) #define ACPI_AEST0D_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE,f) +#define ACPI_AEST0DH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_HEADER,f) +#define ACPI_AEST0D4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_4K,f) +#define ACPI_AEST0D16_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_16K,f) +#define ACPI_AEST0D64_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_64K,f) #define ACPI_AEST0E_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT,f) +#define ACPI_AEST0EA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f) #define ACPI_APMTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_APMT_NODE,f) #define ACPI_ASF0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f) #define ACPI_ASF1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f) @@ -233,10 +247,25 @@ #define ACPI_ASF2a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f) #define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f) #define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) +#define ACPI_ASPTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASPT_HEADER,f) +#define ACPI_ASPT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASPT_GLOBAL_REGS,f) +#define ACPI_ASPT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASPT_SEV_MBOX_REGS,f) +#define ACPI_ASPT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASPT_ACPI_MBOX_REGS,f) +#define ACPI_CDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CDAT,f) +#define ACPI_CDATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_HEADER,f) +#define ACPI_CDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_DSMAS,f) +#define ACPI_CDAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_DSLBIS,f) +#define ACPI_CDAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_DSMSCIS,f) +#define ACPI_CDAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_DSIS,f) +#define ACPI_CDAT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_DSEMTS,f) +#define ACPI_CDAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_SSLBIS,f) +#define ACPI_CDATE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CDAT_SSLBE,f) #define ACPI_CEDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_HEADER, f) #define ACPI_CEDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CHBS, f) #define ACPI_CEDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS, f) #define ACPI_CEDT1_TE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS_TARGET_ELEMENT, f) +#define ACPI_CEDT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS, f) +#define ACPI_CEDT2_TE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS_TARGET_ELEMENT, f) #define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f) #define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f) #define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f) @@ -249,11 +278,25 @@ #define ACPI_DMAR3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f) #define ACPI_DMAR4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ANDD,f) #define ACPI_DMAR5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_SATC,f) +#define ACPI_DMAR6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_SIDP,f) #define ACPI_DRTM0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST,f) #define ACPI_DRTM1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST,f) #define ACPI_DRTM1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE,f) #define ACPI_DRTM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_DPS_ID,f) #define ACPI_EINJ0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) +#define ACPI_ERDT_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTBL_HDR_16,f) +#define ACPI_ERDT_CACD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_CACD,f) +#define ACPI_ERDT_CARC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_CARC,f) +#define ACPI_ERDT_CARD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_CARD,f) +#define ACPI_ERDT_CMRC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_CMRC,f) +#define ACPI_ERDT_CMRD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_CMRD,f) +#define ACPI_ERDT_DACD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_DACD,f) +#define ACPI_ERDT_DACD_PATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_DACD_PATHS,f) +#define ACPI_ERDT_IBAD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_IBAD,f) +#define ACPI_ERDT_IBRD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_IBRD,f) +#define ACPI_ERDT_MARC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_MARC,f) +#define ACPI_ERDT_MMRC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_MMRC,f) +#define ACPI_ERDT_RMDD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ERDT_RMDD,f) #define ACPI_ERST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) #define ACPI_FPDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT_POINTER,f) @@ -318,14 +361,36 @@ #define ACPI_MADT14_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f) #define ACPI_MADT15_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f) #define ACPI_MADT16_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_MULTIPROC_WAKEUP,f) -#define ACPI_MADT17_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_OEM_DATA,f) +#define ACPI_MADT17_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_CORE_PIC,f) +#define ACPI_MADT18_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LIO_PIC,f) +#define ACPI_MADT19_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_HT_PIC,f) +#define ACPI_MADT20_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_EIO_PIC,f) +#define ACPI_MADT21_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_MSI_PIC,f) +#define ACPI_MADT22_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_BIO_PIC,f) +#define ACPI_MADT23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LPC_PIC,f) +#define ACPI_MADT24_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_RINTC,f) +#define ACPI_MADT25_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IMSIC,f) +#define ACPI_MADT26_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_APLIC,f) +#define ACPI_MADT27_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_PLIC,f) +#define ACPI_MADT128_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_OEM_DATA,f) #define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) #define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f) +#define ACPI_MPAM0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_MSC_NODE,f) +#define ACPI_MPAM1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_NODE,f) +#define ACPI_MPAM1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_CACHE_LOCATOR,f) +#define ACPI_MPAM1B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_MEMORY_LOCATOR,f) +#define ACPI_MPAM1C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_SMMU_INTERFACE,f) +#define ACPI_MPAM1D_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE,f) +#define ACPI_MPAM1E_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_ACPI_INTERFACE,f) +#define ACPI_MPAM1F_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE,f) +#define ACPI_MPAM1G_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_GENERIC_LOCATOR,f) +#define ACPI_MPAM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPAM_FUNC_DEPS,f) #define ACPI_MPST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f) #define ACPI_MPST0A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f) #define ACPI_MPST0B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f) #define ACPI_MPST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f) #define ACPI_MPST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f) +#define ACPI_MRRM0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MRRM_MEM_RANGE_ENTRY,f) #define ACPI_MSCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f) #define ACPI_NFITH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_HEADER,f) #define ACPI_NFIT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f) @@ -336,21 +401,6 @@ #define ACPI_NFIT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_DATA_REGION,f) #define ACPI_NFIT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_FLUSH_ADDRESS,f) #define ACPI_NFIT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_CAPABILITIES,f) -#define ACPI_NHLT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_ENDPOINT,f) -#define ACPI_NHLT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f) -#define ACPI_NHLT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_WAVE_EXTENSIBLE,f) -#define ACPI_NHLT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_FORMAT_CONFIG,f) -#define ACPI_NHLT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_FORMATS_CONFIG,f) -#define ACPI_NHLT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f) -#define ACPI_NHLT5A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A,f) -#define ACPI_NHLT5B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B,f) -#define ACPI_NHLT5C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C,f) -#define ACPI_NHLT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_CONFIG,f) -#define ACPI_NHLT6A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_COUNT,f) -#define ACPI_NHLT6B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG,f) -#define ACPI_NHLT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_INFO_COUNT,f) -#define ACPI_NHLT7A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_INFO,f) -#define ACPI_NHLT9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION,f) #define ACPI_PCCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f) #define ACPI_PCCT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED,f) #define ACPI_PCCT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED_TYPE2,f) @@ -375,6 +425,18 @@ #define ACPI_PRMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f) #define ACPI_PRMT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f) #define ACPI_PRMT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f) +#define ACPI_RAS2_PCC_DESC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RAS2_PCC_DESC,f) +#define ACPI_RHCTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_NODE_HEADER,f) +#define ACPI_RHCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_ISA_STRING,f) +#define ACPI_RHCT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_CMO_NODE,f) +#define ACPI_RHCT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_MMU_NODE,f) +#define ACPI_RHCTFFFF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_HART_INFO,f) +#define ACPI_RIMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_NODE,f) +#define ACPI_RIMTI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_IOMMU,f) +#define ACPI_RIMTW_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_IOMMU_WIRE_GSI,f) +#define ACPI_RIMTP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_PCIE_RC,f) +#define ACPI_RIMTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_ID_MAPPING,f) +#define ACPI_RIMTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RIMT_PLATFORM_DEVICE,f) #define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) #define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) @@ -394,6 +456,7 @@ #define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f) #define ACPI_SRAT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f) #define ACPI_SRAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f) +#define ACPI_SRAT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_RINTC_AFFINITY,f) #define ACPI_SVKL0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f) #define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) #define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f) @@ -417,11 +480,14 @@ #define ACPI_AEST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_PROCESSOR,f,o) #define ACPI_AEST0D_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERFACE,f,o) #define ACPI_AEST0E_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT,f,o) +#define ACPI_AEST0EA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f,o) #define ACPI_AGDI_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_AGDI,f,o) #define ACPI_APMTN_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_APMT_NODE,f,o) #define ACPI_BGRT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_BGRT,f,o) +#define ACPI_DMAR0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f,o) #define ACPI_DRTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_DRTM,f,o) #define ACPI_DRTM1a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_DRTM_RESOURCE,f,o) +#define ACPI_ERDT_RMDD_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_ERDT_RMDD,f,o) #define ACPI_FADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FADT,f,o) #define ACPI_FACS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FACS,f,o) #define ACPI_HPET_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o) @@ -433,6 +499,7 @@ #define ACPI_SRAT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o) #define ACPI_SRAT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o) #define ACPI_SRAT5_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f,o) +#define ACPI_SRAT7_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_RINTC_AFFINITY,f,o) #define ACPI_GTDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o) #define ACPI_GTDT0a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o) #define ACPI_GTDT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o) @@ -459,6 +526,8 @@ #define ACPI_MADT10_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o) #define ACPI_MADT11_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o) #define ACPI_MADT13_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f,o) +#define ACPI_MADT14_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f,o) +#define ACPI_MADT15_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f,o) #define ACPI_MPST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o) #define ACPI_MPST2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o) #define ACPI_NFIT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f,o) diff --git a/sys/contrib/dev/acpica/include/actbl.h b/sys/contrib/dev/acpica/include/actbl.h index ae3801f43450..ae52bd452c90 100644 --- a/sys/contrib/dev/acpica/include/actbl.h +++ b/sys/contrib/dev/acpica/include/actbl.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -213,15 +213,15 @@ typedef struct acpi_table_header { - char Signature[ACPI_NAMESEG_SIZE]; /* ASCII table signature */ - UINT32 Length; /* Length of table in bytes, including this header */ - UINT8 Revision; /* ACPI Specification minor version number */ - UINT8 Checksum; /* To make sum of entire table == 0 */ - char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ - char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ - UINT32 OemRevision; /* OEM revision number */ - char AslCompilerId[ACPI_NAMESEG_SIZE]; /* ASCII ASL compiler vendor ID */ - UINT32 AslCompilerRevision; /* ASL compiler version */ + char Signature[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; /* ASCII table signature */ + UINT32 Length; /* Length of table in bytes, including this header */ + UINT8 Revision; /* ACPI Specification minor version number */ + UINT8 Checksum; /* To make sum of entire table == 0 */ + char OemId[ACPI_OEM_ID_SIZE] ACPI_NONSTRING; /* ASCII OEM identification */ + char OemTableId[ACPI_OEM_TABLE_ID_SIZE] ACPI_NONSTRING; /* ASCII OEM table identification */ + UINT32 OemRevision; /* OEM revision number */ + char AslCompilerId[ACPI_NAMESEG_SIZE] ACPI_NONSTRING; /* ASCII ASL compiler vendor ID */ + UINT32 AslCompilerRevision; /* ASL compiler version */ } ACPI_TABLE_HEADER; diff --git a/sys/contrib/dev/acpica/include/actbl1.h b/sys/contrib/dev/acpica/include/actbl1.h index 3de78b0d8f01..ec04f0a0ab9f 100644 --- a/sys/contrib/dev/acpica/include/actbl1.h +++ b/sys/contrib/dev/acpica/include/actbl1.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -170,6 +170,7 @@ */ #define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */ #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ +#define ACPI_SIG_ASPT "ASPT" /* AMD Secure Processor Table */ #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ @@ -189,6 +190,7 @@ #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */ #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ +#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table*/ #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ @@ -258,6 +260,16 @@ typedef struct acpi_whea_header } ACPI_WHEA_HEADER; +/* Larger subtable header (when Length can exceed 255) */ + +typedef struct acpi_subtbl_hdr_16 +{ + UINT16 Type; + UINT16 Length; + +} ACPI_SUBTBL_HDR_16; + + /******************************************************************************* * * ASF - Alert Standard Format table (Signature "ASF!") @@ -397,6 +409,86 @@ typedef struct acpi_asf_address } ACPI_ASF_ADDRESS; +/******************************************************************************* + * + * ASPT - AMD Secure Processor Table (Signature "ASPT") + * Revision 0x1 + * + * Conforms to AMD Socket SP5/SP6 Platform ASPT Rev1 Specification, + * 12 September 2022 + * + ******************************************************************************/ + +typedef struct acpi_table_aspt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 NumEntries; + +} ACPI_TABLE_ASPT; + + +/* ASPT subtable header */ + +typedef struct acpi_aspt_header +{ + UINT16 Type; + UINT16 Length; + +} ACPI_ASPT_HEADER; + + +/* Values for Type field above */ + +enum AcpiAsptType +{ + ACPI_ASPT_TYPE_GLOBAL_REGS = 0, + ACPI_ASPT_TYPE_SEV_MBOX_REGS = 1, + ACPI_ASPT_TYPE_ACPI_MBOX_REGS = 2, + ACPI_ASPT_TYPE_UNKNOWN = 3, +}; + +/* + * ASPT subtables + */ + +/* 0: ASPT Global Registers */ + +typedef struct acpi_aspt_global_regs +{ + ACPI_ASPT_HEADER Header; + UINT32 Reserved; + UINT64 FeatureRegAddr; + UINT64 IrqEnRegAddr; + UINT64 IrqStRegAddr; + +} ACPI_ASPT_GLOBAL_REGS; + + +/* 1: ASPT SEV Mailbox Registers */ + +typedef struct acpi_aspt_sev_mbox_regs +{ + ACPI_ASPT_HEADER Header; + UINT8 MboxIrqId; + UINT8 Reserved[3]; + UINT64 CmdRespRegAddr; + UINT64 CmdBufLoRegAddr; + UINT64 CmdBufHiRegAddr; + +} ACPI_ASPT_SEV_MBOX_REGS; + + +/* 2: ASPT ACPI Mailbox Registers */ + +typedef struct acpi_aspt_acpi_mbox_regs +{ + ACPI_ASPT_HEADER Header; + UINT32 Reserved1; + UINT64 CmdRespRegAddr; + UINT64 Reserved2[2]; + +} ACPI_ASPT_ACPI_MBOX_REGS; + /******************************************************************************* * @@ -496,10 +588,155 @@ typedef struct acpi_table_boot /******************************************************************************* * + * CDAT - Coherent Device Attribute Table + * Version 1 + * + * Conforms to the "Coherent Device Attribute Table (CDAT) Specification + " (Revision 1.01, October 2020.) + * + ******************************************************************************/ + +typedef struct acpi_table_cdat +{ + UINT32 Length; /* Length of table in bytes, including this header */ + UINT8 Revision; /* ACPI Specification minor version number */ + UINT8 Checksum; /* To make sum of entire table == 0 */ + UINT8 Reserved[6]; + UINT32 Sequence; /* Used to detect runtime CDAT table changes */ + +} ACPI_TABLE_CDAT; + + +/* CDAT common subtable header */ + +typedef struct acpi_cdat_header +{ + UINT8 Type; + UINT8 Reserved; + UINT16 Length; + +} ACPI_CDAT_HEADER; + +/* Values for Type field above */ + +enum AcpiCdatType +{ + ACPI_CDAT_TYPE_DSMAS = 0, + ACPI_CDAT_TYPE_DSLBIS = 1, + ACPI_CDAT_TYPE_DSMSCIS = 2, + ACPI_CDAT_TYPE_DSIS = 3, + ACPI_CDAT_TYPE_DSEMTS = 4, + ACPI_CDAT_TYPE_SSLBIS = 5, + ACPI_CDAT_TYPE_RESERVED = 6 /* 6 through 0xFF are reserved */ +}; + + +/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */ + +typedef struct acpi_cdat_dsmas +{ + UINT8 DsmadHandle; + UINT8 Flags; + UINT16 Reserved; + UINT64 DpaBaseAddress; + UINT64 DpaLength; + +} ACPI_CDAT_DSMAS; + +/* Flags for subtable above */ + +#define ACPI_CDAT_DSMAS_NON_VOLATILE (1 << 2) +#define ACPI_CDAT_DSMAS_SHAREABLE (1 << 3) +#define ACPI_CDAT_DSMAS_READ_ONLY (1 << 6) + + +/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */ + +typedef struct acpi_cdat_dslbis +{ + UINT8 Handle; + UINT8 Flags; /* If Handle matches a DSMAS handle, the definition of this field matches + * Flags field in HMAT System Locality Latency */ + UINT8 DataType; + UINT8 Reserved; + UINT64 EntryBaseUnit; + UINT16 Entry[3]; + UINT16 Reserved2; + +} ACPI_CDAT_DSLBIS; + + +/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */ + +typedef struct acpi_cdat_dsmscis +{ + UINT8 DsmasHandle; + UINT8 Reserved[3]; + UINT64 SideCacheSize; + UINT32 CacheAttributes; + +} ACPI_CDAT_DSMSCIS; + + +/* Subtable 3: Device Scoped Initiator Structure (DSIS) */ + +typedef struct acpi_cdat_dsis +{ + UINT8 Flags; + UINT8 Handle; + UINT16 Reserved; + +} ACPI_CDAT_DSIS; + +/* Flags for above subtable */ + +#define ACPI_CDAT_DSIS_MEM_ATTACHED (1 << 0) + + +/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */ + +typedef struct acpi_cdat_dsemts +{ + UINT8 DsmasHandle; + UINT8 MemoryType; + UINT16 Reserved; + UINT64 DpaOffset; + UINT64 RangeLength; + +} ACPI_CDAT_DSEMTS; + + +/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */ + +typedef struct acpi_cdat_sslbis +{ + UINT8 DataType; + UINT8 Reserved[3]; + UINT64 EntryBaseUnit; + +} ACPI_CDAT_SSLBIS; + + +/* Sub-subtable for above, SslbeEntries field */ + +typedef struct acpi_cdat_sslbe +{ + UINT16 PortxId; + UINT16 PortyId; + UINT16 LatencyOrBandwidth; + UINT16 Reserved; + +} ACPI_CDAT_SSLBE; + +#define ACPI_CDAT_SSLBIS_US_PORT 0x0100 +#define ACPI_CDAT_SSLBIS_ANY_PORT 0xffff + +/******************************************************************************* + * * CEDT - CXL Early Discovery Table * Version 1 * - * Conforms to the "CXL Early Discovery Table" (CXL 2.0) + * Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020) * ******************************************************************************/ @@ -525,7 +762,9 @@ enum AcpiCedtType { ACPI_CEDT_TYPE_CHBS = 0, ACPI_CEDT_TYPE_CFMWS = 1, - ACPI_CEDT_TYPE_RESERVED = 2, + ACPI_CEDT_TYPE_CXIMS = 2, + ACPI_CEDT_TYPE_RDPAS = 3, + ACPI_CEDT_TYPE_RESERVED = 4, }; /* Values for version field above */ @@ -583,6 +822,7 @@ typedef struct acpi_cedt_cfmws_target_element /* Values for Interleave Arithmetic field above */ #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0) +#define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1) /* Values for Restrictions field above */ @@ -592,6 +832,40 @@ typedef struct acpi_cedt_cfmws_target_element #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3) #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4) +/* 2: CXL XOR Interleave Math Structure */ + +typedef struct acpi_cedt_cxims { + ACPI_CEDT_HEADER Header; + UINT16 Reserved1; + UINT8 Hbig; + UINT8 NrXormaps; + UINT64 XormapList[]; +} ACPI_CEDT_CXIMS; + +typedef struct acpi_cedt_cxims_target_element +{ + UINT64 Xormap; + +} ACPI_CEDT_CXIMS_TARGET_ELEMENT; + + +/* 3: CXL RCEC Downstream Port Association Structure */ + +struct acpi_cedt_rdpas { + ACPI_CEDT_HEADER Header; + UINT16 Segment; + UINT16 Bdf; + UINT8 Protocol; + UINT64 Address; +}; + +/* Masks for bdf field above */ +#define ACPI_CEDT_RDPAS_BUS_MASK 0xff00 +#define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8 +#define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007 + +#define ACPI_CEDT_RDPAS_PROTOCOL_IO (0) +#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1) /******************************************************************************* * @@ -783,6 +1057,7 @@ typedef struct acpi_dbg2_device #define ACPI_DBG2_16550_WITH_GAS 0x0012 #define ACPI_DBG2_SDM845_7_372MHZ 0x0013 #define ACPI_DBG2_INTEL_LPSS 0x0014 +#define ACPI_DBG2_RISCV_SBI_CON 0x0015 #define ACPI_DBG2_1394_STANDARD 0x0000 @@ -854,7 +1129,8 @@ enum AcpiDmarType ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, ACPI_DMAR_TYPE_NAMESPACE = 4, ACPI_DMAR_TYPE_SATC = 5, - ACPI_DMAR_TYPE_RESERVED = 6 /* 6 and greater are reserved */ + ACPI_DMAR_TYPE_SIDP = 6, + ACPI_DMAR_TYPE_RESERVED = 7 /* 7 and greater are reserved */ }; @@ -864,7 +1140,8 @@ typedef struct acpi_dmar_device_scope { UINT8 EntryType; UINT8 Length; - UINT16 Reserved; + UINT8 Flags; + UINT8 Reserved; UINT8 EnumerationId; UINT8 Bus; @@ -901,7 +1178,7 @@ typedef struct acpi_dmar_hardware_unit { ACPI_DMAR_HEADER Header; UINT8 Flags; - UINT8 Reserved; + UINT8 Size; UINT16 Segment; UINT64 Address; /* Register Base Address */ @@ -964,7 +1241,10 @@ typedef struct acpi_dmar_andd ACPI_DMAR_HEADER Header; UINT8 Reserved[3]; UINT8 DeviceNumber; - char DeviceName[1]; + union { + char __pad; + ACPI_FLEX_ARRAY(char, DeviceName); + }; } ACPI_DMAR_ANDD; @@ -978,9 +1258,20 @@ typedef struct acpi_dmar_satc UINT8 Reserved; UINT16 Segment; -} ACPI_DMAR_SATC +} ACPI_DMAR_SATC; + + +/* 6: SoC Integrated Device Property Reporting Structure */ + +typedef struct acpi_dmar_sidp +{ + ACPI_DMAR_HEADER Header; + UINT16 Reserved; + UINT16 Segment; + +} ACPI_DMAR_SIDP; + -; /******************************************************************************* * * DRTM - Dynamic Root of Trust for Measurement table @@ -1017,7 +1308,7 @@ typedef struct acpi_table_drtm typedef struct acpi_drtm_vtable_list { UINT32 ValidatedTableCount; - UINT64 ValidatedTables[1]; + UINT64 ValidatedTables[]; } ACPI_DRTM_VTABLE_LIST; @@ -1036,7 +1327,7 @@ typedef struct acpi_drtm_resource typedef struct acpi_drtm_resource_list { UINT32 ResourceCount; - ACPI_DRTM_RESOURCE Resources[1]; + ACPI_DRTM_RESOURCE Resources[]; } ACPI_DRTM_RESOURCE_LIST; @@ -1064,7 +1355,7 @@ typedef struct acpi_table_ecdt ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ UINT8 Gpe; /* The GPE for the EC */ - UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ + UINT8 Id[]; /* Full namepath of the EC in the ACPI namespace */ } ACPI_TABLE_ECDT; @@ -1103,17 +1394,18 @@ typedef struct acpi_einj_entry enum AcpiEinjActions { - ACPI_EINJ_BEGIN_OPERATION = 0, - ACPI_EINJ_GET_TRIGGER_TABLE = 1, - ACPI_EINJ_SET_ERROR_TYPE = 2, - ACPI_EINJ_GET_ERROR_TYPE = 3, - ACPI_EINJ_END_OPERATION = 4, - ACPI_EINJ_EXECUTE_OPERATION = 5, - ACPI_EINJ_CHECK_BUSY_STATUS = 6, - ACPI_EINJ_GET_COMMAND_STATUS = 7, - ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, - ACPI_EINJ_GET_EXECUTE_TIMINGS = 9, - ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */ + ACPI_EINJ_BEGIN_OPERATION = 0x0, + ACPI_EINJ_GET_TRIGGER_TABLE = 0x1, + ACPI_EINJ_SET_ERROR_TYPE = 0x2, + ACPI_EINJ_GET_ERROR_TYPE = 0x3, + ACPI_EINJ_END_OPERATION = 0x4, + ACPI_EINJ_EXECUTE_OPERATION = 0x5, + ACPI_EINJ_CHECK_BUSY_STATUS = 0x6, + ACPI_EINJ_GET_COMMAND_STATUS = 0x7, + ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 0x8, + ACPI_EINJ_GET_EXECUTE_TIMINGS = 0x9, + ACPI_EINJV2_GET_ERROR_TYPE = 0x11, + ACPI_EINJ_ACTION_RESERVED = 0x12, /* 0x12 and greater are reserved */ ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ }; @@ -1190,6 +1482,12 @@ enum AcpiEinjCommandStatus #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) #define ACPI_EINJ_PLATFORM_FATAL (1<<11) +#define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12) +#define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13) +#define ACPI_EINJ_CXL_CACHE_FATAL (1<<14) +#define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15) +#define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16) +#define ACPI_EINJ_CXL_MEM_FATAL (1<<17) #define ACPI_EINJ_VENDOR_DEFINED (1<<31) @@ -1998,7 +2296,7 @@ typedef struct acpi_hmat_cache UINT32 Reserved1; UINT64 CacheSize; UINT32 CacheAttributes; - UINT16 Reserved2; + UINT16 AddressMode; UINT16 NumberOfSMBIOSHandles; } ACPI_HMAT_CACHE; @@ -2011,6 +2309,9 @@ typedef struct acpi_hmat_cache #define ACPI_HMAT_WRITE_POLICY (0x0000F000) #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000) +#define ACPI_HMAT_CACHE_MODE_UNKNOWN (0) +#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR (1) + /* Values for cache associativity flag */ #define ACPI_HMAT_CA_NONE (0) diff --git a/sys/contrib/dev/acpica/include/actbl2.h b/sys/contrib/dev/acpica/include/actbl2.h index 3032c5e25003..a74b6d555a3a 100644 --- a/sys/contrib/dev/acpica/include/actbl2.h +++ b/sys/contrib/dev/acpica/include/actbl2.h @@ -1,6 +1,6 @@ /****************************************************************************** * - * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) + * Name: actbl2.h - ACPI Table Definitions * *****************************************************************************/ @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -171,14 +171,18 @@ #define ACPI_SIG_AGDI "AGDI" /* Arm Generic Diagnostic Dump and Reset Device Interface */ #define ACPI_SIG_APMT "APMT" /* Arm Performance Monitoring Unit table */ #define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */ +#define ACPI_SIG_CCEL "CCEL" /* CC Event Log Table */ +#define ACPI_SIG_CDAT "CDAT" /* Coherent Device Attribute Table */ +#define ACPI_SIG_ERDT "ERDT" /* Enhanced Resource Director Technology */ #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ +#define ACPI_SIG_MPAM "MPAM" /* Memory System Resource Partitioning and Monitoring Table */ #define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ -#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ +#define ACPI_SIG_MRRM "MRRM" /* Memory Range and Region Mapping table */ #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ #define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */ #define ACPI_SIG_NHLT "NHLT" /* Non HD Audio Link Table */ @@ -189,11 +193,15 @@ #define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */ #define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */ #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ +#define ACPI_SIG_RAS2 "RAS2" /* RAS2 Feature table */ #define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */ +#define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */ +#define ACPI_SIG_RIMT "RIMT" /* RISC-V IO Mapping Table */ #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ #define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */ +#define ACPI_SIG_SWFT "SWFT" /* SoundWire File Table */ #define ACPI_SIG_TDEL "TDEL" /* TD Event Log Table */ @@ -228,13 +236,12 @@ typedef struct acpi_table_aest { ACPI_TABLE_HEADER Header; - void *NodeArray[]; } ACPI_TABLE_AEST; /* Common Subtable header - one per Node Structure (Subtable) */ -typedef struct acpi_aest_hdr +typedef struct acpi_aest_hdr { UINT8 Type; UINT16 Length; @@ -256,7 +263,9 @@ typedef struct acpi_aest_hdr #define ACPI_AEST_SMMU_ERROR_NODE 2 #define ACPI_AEST_VENDOR_ERROR_NODE 3 #define ACPI_AEST_GIC_ERROR_NODE 4 -#define ACPI_AEST_NODE_TYPE_RESERVED 5 /* 5 and above are reserved */ +#define ACPI_AEST_PCIE_ERROR_NODE 5 +#define ACPI_AEST_PROXY_ERROR_NODE 6 +#define ACPI_AEST_NODE_TYPE_RESERVED 7 /* 7 and above are reserved */ /* @@ -265,7 +274,7 @@ typedef struct acpi_aest_hdr /* 0: Processor Error */ -typedef struct acpi_aest_processor +typedef struct acpi_aest_processor { UINT32 ProcessorId; UINT8 ResourceType; @@ -285,7 +294,7 @@ typedef struct acpi_aest_processor /* 0R: Processor Cache Resource Substructure */ -typedef struct acpi_aest_processor_cache +typedef struct acpi_aest_processor_cache { UINT32 CacheReference; UINT32 Reserved; @@ -301,7 +310,7 @@ typedef struct acpi_aest_processor_cache /* 1R: Processor TLB Resource Substructure */ -typedef struct acpi_aest_processor_tlb +typedef struct acpi_aest_processor_tlb { UINT32 TlbLevel; UINT32 Reserved; @@ -310,7 +319,7 @@ typedef struct acpi_aest_processor_tlb /* 2R: Processor Generic Resource Substructure */ -typedef struct acpi_aest_processor_generic +typedef struct acpi_aest_processor_generic { UINT32 Resource; @@ -318,7 +327,7 @@ typedef struct acpi_aest_processor_generic /* 1: Memory Error */ -typedef struct acpi_aest_memory +typedef struct acpi_aest_memory { UINT32 SratProximityDomain; @@ -326,7 +335,7 @@ typedef struct acpi_aest_memory /* 2: Smmu Error */ -typedef struct acpi_aest_smmu +typedef struct acpi_aest_smmu { UINT32 IortNodeReference; UINT32 SubcomponentReference; @@ -335,7 +344,7 @@ typedef struct acpi_aest_smmu /* 3: Vendor Defined */ -typedef struct acpi_aest_vendor +typedef struct acpi_aest_vendor { UINT32 AcpiHid; UINT32 AcpiUid; @@ -343,9 +352,19 @@ typedef struct acpi_aest_vendor } ACPI_AEST_VENDOR; +/* 3: Vendor Defined V2 */ + +typedef struct acpi_aest_vendor_v2 +{ + UINT64 AcpiHid; + UINT32 AcpiUid; + UINT8 VendorSpecificData[16]; + +} ACPI_AEST_VENDOR_V2; + /* 4: Gic Error */ -typedef struct acpi_aest_gic +typedef struct acpi_aest_gic { UINT32 InterfaceType; UINT32 InstanceId; @@ -360,10 +379,26 @@ typedef struct acpi_aest_gic #define ACPI_AEST_GIC_ITS 3 #define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */ +/* 5: PCIe Error */ + +typedef struct acpi_aest_pcie +{ + UINT32 IortNodeReference; + +} ACPI_AEST_PCIE; + + +/* 6: Proxy Error */ + +typedef struct acpi_aest_proxy +{ + UINT64 NodeAddress; + +} ACPI_AEST_PROXY; /* Node Interface Structure */ -typedef struct acpi_aest_node_interface +typedef struct acpi_aest_node_interface { UINT8 Type; UINT8 Reserved[3]; @@ -377,15 +412,71 @@ typedef struct acpi_aest_node_interface } ACPI_AEST_NODE_INTERFACE; +/* Node Interface Structure V2*/ + +typedef struct acpi_aest_node_interface_header +{ + UINT8 Type; + UINT8 GroupFormat; + UINT8 Reserved[2]; + UINT32 Flags; + UINT64 Address; + UINT32 ErrorRecordIndex; + UINT32 ErrorRecordCount; + +} ACPI_AEST_NODE_INTERFACE_HEADER; + +#define ACPI_AEST_NODE_GROUP_FORMAT_4K 0 +#define ACPI_AEST_NODE_GROUP_FORMAT_16K 1 +#define ACPI_AEST_NODE_GROUP_FORMAT_64K 2 + +typedef struct acpi_aest_node_interface_common +{ + UINT32 ErrorNodeDevice; + UINT32 ProcessorAffinity; + UINT64 ErrorGroupRegisterBase; + UINT64 FaultInjectRegisterBase; + UINT64 InterruptConfigRegisterBase; + +} ACPI_AEST_NODE_INTERFACE_COMMON; + +typedef struct acpi_aest_node_interface_4k +{ + UINT64 ErrorRecordImplemented; + UINT64 ErrorStatusReporting; + UINT64 AddressingMode; + ACPI_AEST_NODE_INTERFACE_COMMON Common; + +} ACPI_AEST_NODE_INTERFACE_4K; + +typedef struct acpi_aest_node_interface_16k +{ + UINT64 ErrorRecordImplemented[4]; + UINT64 ErrorStatusReporting[4]; + UINT64 AddressingMode[4]; + ACPI_AEST_NODE_INTERFACE_COMMON Common; + +} ACPI_AEST_NODE_INTERFACE_16K; + +typedef struct acpi_aest_node_interface_64k +{ + INT64 ErrorRecordImplemented[14]; + UINT64 ErrorStatusReporting[14]; + UINT64 AddressingMode[14]; + ACPI_AEST_NODE_INTERFACE_COMMON Common; + +} ACPI_AEST_NODE_INTERFACE_64K; + /* Values for Type field above */ -#define ACPI_AEST_NODE_SYSTEM_REGISTER 0 -#define ACPI_AEST_NODE_MEMORY_MAPPED 1 -#define ACPI_AEST_XFACE_RESERVED 2 /* 2 and above are reserved */ +#define ACPI_AEST_NODE_SYSTEM_REGISTER 0 +#define ACPI_AEST_NODE_MEMORY_MAPPED 1 +#define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED 2 +#define ACPI_AEST_XFACE_RESERVED 3 /* 2 and above are reserved */ /* Node Interrupt Structure */ -typedef struct acpi_aest_node_interrupt +typedef struct acpi_aest_node_interrupt { UINT8 Type; UINT8 Reserved[2]; @@ -396,6 +487,18 @@ typedef struct acpi_aest_node_interrupt } ACPI_AEST_NODE_INTERRUPT; +/* Node Interrupt Structure V2 */ + +typedef struct acpi_aest_node_interrupt_v2 +{ + UINT8 Type; + UINT8 Reserved[2]; + UINT8 Flags; + UINT32 Gsiv; + UINT8 Reserved1[4]; + +} ACPI_AEST_NODE_INTERRUPT_V2; + /* Values for Type field above */ #define ACPI_AEST_NODE_FAULT_HANDLING 0 @@ -521,13 +624,260 @@ typedef struct acpi_table_bdat } ACPI_TABLE_BDAT; +/******************************************************************************* + * + * CCEL - CC-Event Log + * From: "Guest-Host-Communication Interface (GHCI) for Intel + * Trust Domain Extensions (Intel TDX)". Feb 2022 + * + ******************************************************************************/ + +typedef struct acpi_table_ccel +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT8 CCType; + UINT8 CCSubType; + UINT16 Reserved; + UINT64 LogAreaMinimumLength; + UINT64 LogAreaStartAddress; + +} ACPI_TABLE_CCEL; + +/******************************************************************************* + * + * ERDT - Enhanced Resource Director Technology (ERDT) table + * + * Conforms to "Intel Resource Director Technology Architecture Specification" + * Version 1.1, January 2025 + * + ******************************************************************************/ + +typedef struct acpi_table_erdt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 MaxClos; /* Maximum classes of service */ + UINT8 Reserved[24]; + UINT8 Erdt_Substructures[]; + +} ACPI_TABLE_ERDT; + + +/* Values for subtable type in ACPI_SUBTBL_HDR_16 */ + +enum AcpiErdtType +{ + ACPI_ERDT_TYPE_RMDD = 0, + ACPI_ERDT_TYPE_CACD = 1, + ACPI_ERDT_TYPE_DACD = 2, + ACPI_ERDT_TYPE_CMRC = 3, + ACPI_ERDT_TYPE_MMRC = 4, + ACPI_ERDT_TYPE_MARC = 5, + ACPI_ERDT_TYPE_CARC = 6, + ACPI_ERDT_TYPE_CMRD = 7, + ACPI_ERDT_TYPE_IBRD = 8, + ACPI_ERDT_TYPE_IBAD = 9, + ACPI_ERDT_TYPE_CARD = 10, + ACPI_ERDT_TYPE_RESERVED = 11 /* 11 and above are reserved */ + +}; + +/* + * ERDT Subtables, correspond to Type in ACPI_SUBTBL_HDR_16 + */ + +/* 0: RMDD - Resource Management Domain Description */ + +typedef struct acpi_erdt_rmdd +{ + ACPI_SUBTBL_HDR_16 Header; + UINT16 Flags; + UINT16 IO_l3_Slices; /* Number of slices in IO cache */ + UINT8 IO_l3_Sets; /* Number of sets in IO cache */ + UINT8 IO_l3_Ways; /* Number of ways in IO cache */ + UINT64 Reserved; + UINT16 DomainId; /* Unique domain ID */ + UINT32 MaxRmid; /* Maximun RMID supported */ + UINT64 CregBase; /* Control Register Base Address */ + UINT16 CregSize; /* Control Register Size (4K pages) */ + UINT8 RmddStructs[]; + +} ACPI_ERDT_RMDD; + + +/* 1: CACD - CPU Agent Collection Description */ + +typedef struct acpi_erdt_cacd +{ + ACPI_SUBTBL_HDR_16 Header; + UINT16 Reserved; + UINT16 DomainId; /* Unique domain ID */ + UINT32 X2APICIDS[]; + +} ACPI_ERDT_CACD; + + +/* 2: DACD - Device Agent Collection Description */ + +typedef struct acpi_erdt_dacd +{ + ACPI_SUBTBL_HDR_16 Header; + UINT16 Reserved; + UINT16 DomainId; /* Unique domain ID */ + UINT8 DevPaths[]; + +} ACPI_ERDT_DACD; + +typedef struct acpi_erdt_dacd_dev_paths +{ + ACPI_SUBTABLE_HEADER Header; + UINT16 Segment; + UINT8 Reserved; + UINT8 StartBus; + UINT8 Path[]; + +} ACPI_ERDT_DACD_PATHS; + + +/* 3: CMRC - Cache Monitoring Registers for CPU Agents */ + +typedef struct acpi_erdt_cmrc +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved1; + UINT32 Flags; + UINT8 IndexFn; + UINT8 Reserved2[11]; + UINT64 CmtRegBase; + UINT32 CmtRegSize; + UINT16 ClumpSize; + UINT16 ClumpStride; + UINT64 UpScale; + +} ACPI_ERDT_CMRC; + + +/* 4: MMRC - Memory-bandwidth Monitoring Registers for CPU Agents */ + +typedef struct acpi_erdt_mmrc +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved1; + UINT32 Flags; + UINT8 IndexFn; + UINT8 Reserved2[11]; + UINT64 RegBase; + UINT32 RegSize; + UINT8 CounterWidth; + UINT64 UpScale; + UINT8 Reserved3[7]; + UINT32 CorrFactorListLen; + UINT32 CorrFactorList[]; + +} ACPI_ERDT_MMRC; + + +/* 5: MARC - Memory-bandwidth Allocation Registers for CPU Agents */ + +typedef struct acpi_erdt_marc +{ + ACPI_SUBTBL_HDR_16 Header; + UINT16 Reserved1; + UINT16 Flags; + UINT8 IndexFn; + UINT8 Reserved2[7]; + UINT64 RegBaseOpt; + UINT64 RegBaseMin; + UINT64 RegBaseMax; + UINT32 MbaRegSize; + UINT32 MbaCtrlRange; + +} ACPI_ERDT_MARC; + + +/* 6: CARC - Cache Allocation Registers for CPU Agents */ + +typedef struct acpi_erdt_carc +{ + ACPI_SUBTBL_HDR_16 Header; + +} ACPI_ERDT_CARC; + + +/* 7: CMRD - Cache Monitoring Registers for Device Agents */ + +typedef struct acpi_erdt_cmrd +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved1; + UINT32 Flags; + UINT8 IndexFn; + UINT8 Reserved2[11]; + UINT64 RegBase; + UINT32 RegSize; + UINT16 CmtRegOff; + UINT16 CmtClumpSize; + UINT64 UpScale; + +} ACPI_ERDT_CMRD; + + +/* 8: IBRD - Cache Monitoring Registers for Device Agents */ + +typedef struct acpi_erdt_ibrd +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved1; + UINT32 Flags; + UINT8 IndexFn; + UINT8 Reserved2[11]; + UINT64 RegBase; + UINT32 RegSize; + UINT16 TotalBwOffset; + UINT16 IOMissBwOffset; + UINT16 TotalBwClump; + UINT16 IOMissBwClump; + UINT8 Reserved3[7]; + UINT8 CounterWidth; + UINT64 UpScale; + UINT32 CorrFactorListLen; + UINT32 CorrFactorList[]; + +} ACPI_ERDT_IBRD; + + +/* 9: IBAD - IO bandwidth Allocation Registers for device agents */ + +typedef struct acpi_erdt_ibad +{ + ACPI_SUBTBL_HDR_16 Header; + +} ACPI_ERDT_IBAD; + + +/* 10: CARD - IO bandwidth Allocation Registers for Device Agents */ + +typedef struct acpi_erdt_card +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved1; + UINT32 Flags; + UINT32 ContentionMask; + UINT8 IndexFn; + UINT8 Reserved2[7]; + UINT64 RegBase; + UINT32 RegSize; + UINT16 CatRegOffset; + UINT16 CatRegBlockSize; + +} ACPI_ERDT_CARD; + /******************************************************************************* * * IORT - IO Remapping Table * * Conforms to "IO Remapping Table System Software on ARM Platforms", - * Document number: ARM DEN 0049E.d, Feb 2022 + * Document number: ARM DEN 0049E.f, Apr 2024 * ******************************************************************************/ @@ -552,7 +902,7 @@ typedef struct acpi_iort_node UINT32 Identifier; UINT32 MappingCount; UINT32 MappingOffset; - char NodeData[1]; + char NodeData[]; } ACPI_IORT_NODE; @@ -610,6 +960,7 @@ typedef struct acpi_iort_memory_access #define ACPI_IORT_MF_COHERENCY (1) #define ACPI_IORT_MF_ATTRIBUTES (1<<1) +#define ACPI_IORT_MF_CANWBS (1<<2) /* @@ -618,7 +969,7 @@ typedef struct acpi_iort_memory_access typedef struct acpi_iort_its_group { UINT32 ItsCount; - UINT32 Identifiers[1]; /* GIC ITS identifier array */ + UINT32 Identifiers[]; /* GIC ITS identifier array */ } ACPI_IORT_ITS_GROUP; @@ -628,7 +979,7 @@ typedef struct acpi_iort_named_component UINT32 NodeFlags; UINT64 MemoryProperties; /* Memory access properties */ UINT8 MemoryAddressLimit; /* Memory address size limit */ - char DeviceName[1]; /* Path of namespace object */ + char DeviceName[]; /* Path of namespace object */ } ACPI_IORT_NAMED_COMPONENT; @@ -644,7 +995,7 @@ typedef struct acpi_iort_root_complex UINT32 PciSegmentNumber; UINT8 MemoryAddressLimit; /* Memory address size limit */ UINT16 PasidCapabilities; /* PASID Capabilities */ - UINT8 Reserved[1]; /* Reserved, must be zero */ + UINT8 Reserved[]; /* Reserved, must be zero */ } ACPI_IORT_ROOT_COMPLEX; @@ -668,7 +1019,7 @@ typedef struct acpi_iort_smmu UINT32 ContextInterruptOffset; UINT32 PmuInterruptCount; UINT32 PmuInterruptOffset; - UINT64 Interrupts[1]; /* Interrupt array */ + UINT64 Interrupts[]; /* Interrupt array */ } ACPI_IORT_SMMU; @@ -725,6 +1076,7 @@ typedef struct acpi_iort_smmu_v3 #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (3<<1) #define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) +#define ACPI_IORT_SMMU_V3_DEVICEID_VALID (1<<4) typedef struct acpi_iort_pmcg { @@ -1107,7 +1459,18 @@ enum AcpiMadtType ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14, ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15, ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16, - ACPI_MADT_TYPE_RESERVED = 17, /* 17 to 0x7F are reserved */ + ACPI_MADT_TYPE_CORE_PIC = 17, + ACPI_MADT_TYPE_LIO_PIC = 18, + ACPI_MADT_TYPE_HT_PIC = 19, + ACPI_MADT_TYPE_EIO_PIC = 20, + ACPI_MADT_TYPE_MSI_PIC = 21, + ACPI_MADT_TYPE_BIO_PIC = 22, + ACPI_MADT_TYPE_LPC_PIC = 23, + ACPI_MADT_TYPE_RINTC = 24, + ACPI_MADT_TYPE_IMSIC = 25, + ACPI_MADT_TYPE_APLIC = 26, + ACPI_MADT_TYPE_PLIC = 27, + ACPI_MADT_TYPE_RESERVED = 28, /* 28 to 0x7F are reserved */ ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */ }; @@ -1212,7 +1575,7 @@ typedef struct acpi_madt_local_sapic UINT8 Reserved[3]; /* Reserved, must be zero */ UINT32 LapicFlags; UINT32 Uid; /* Numeric UID - ACPI 3.0 */ - char UidString[1]; /* String UID - ACPI 3.0 */ + char UidString[]; /* String UID - ACPI 3.0 */ } ACPI_MADT_LOCAL_SAPIC; @@ -1263,7 +1626,7 @@ typedef struct acpi_madt_local_x2apic_nmi } ACPI_MADT_LOCAL_X2APIC_NMI; -/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 changes) */ +/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */ typedef struct acpi_madt_generic_interrupt { @@ -1284,6 +1647,7 @@ typedef struct acpi_madt_generic_interrupt UINT8 EfficiencyClass; UINT8 Reserved2[1]; UINT16 SpeInterrupt; /* ACPI 6.3 */ + UINT16 TrbeInterrupt; /* ACPI 6.5 */ } ACPI_MADT_GENERIC_INTERRUPT; @@ -1292,7 +1656,8 @@ typedef struct acpi_madt_generic_interrupt /* ACPI_MADT_ENABLED (1) Processor is usable if set */ #define ACPI_MADT_PERFORMANCE_IRQ_MODE (1<<1) /* 01: Performance Interrupt Mode */ #define ACPI_MADT_VGIC_IRQ_MODE (1<<2) /* 02: VGIC Maintenance Interrupt mode */ - +#define ACPI_MADT_GICC_ONLINE_CAPABLE (1<<3) /* 03: Processor is online capable */ +#define ACPI_MADT_GICC_NON_COHERENT (1<<4) /* 04: GIC redistributor is not coherent */ /* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */ @@ -1345,25 +1710,30 @@ typedef struct acpi_madt_generic_msi_frame typedef struct acpi_madt_generic_redistributor { ACPI_SUBTABLE_HEADER Header; - UINT16 Reserved; /* reserved - must be zero */ + UINT8 Flags; + UINT8 Reserved; /* reserved - must be zero */ UINT64 BaseAddress; UINT32 Length; } ACPI_MADT_GENERIC_REDISTRIBUTOR; +#define ACPI_MADT_GICR_NON_COHERENT (1) /* 15: Generic Translator (ACPI 6.0) */ typedef struct acpi_madt_generic_translator { ACPI_SUBTABLE_HEADER Header; - UINT16 Reserved; /* reserved - must be zero */ + UINT8 Flags; + UINT8 Reserved; /* reserved - must be zero */ UINT32 TranslationId; UINT64 BaseAddress; UINT32 Reserved2; } ACPI_MADT_GENERIC_TRANSLATOR; +#define ACPI_MADT_ITS_NON_COHERENT (1) + /* 16: Multiprocessor wakeup (ACPI 6.4) */ typedef struct acpi_madt_multiproc_wakeup @@ -1391,11 +1761,203 @@ typedef struct acpi_madt_multiproc_wakeup_mailbox #define ACPI_MP_WAKE_COMMAND_WAKEUP 1 -/* 17: OEM data */ +/* 17: CPU Core Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_core_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT32 ProcessorId; + UINT32 CoreId; + UINT32 Flags; +} ACPI_MADT_CORE_PIC; + +/* Values for Version field above */ + +enum AcpiMadtCorePicVersion { + ACPI_MADT_CORE_PIC_VERSION_NONE = 0, + ACPI_MADT_CORE_PIC_VERSION_V1 = 1, + ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_lio_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT64 Address; + UINT16 Size; + UINT8 Cascade[2]; + UINT32 CascadeMap[2]; +} ACPI_MADT_LIO_PIC; + +/* Values for Version field above */ + +enum AcpiMadtLioPicVersion { + ACPI_MADT_LIO_PIC_VERSION_NONE = 0, + ACPI_MADT_LIO_PIC_VERSION_V1 = 1, + ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 19: HT Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_ht_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT64 Address; + UINT16 Size; + UINT8 Cascade[8]; +} ACPI_MADT_HT_PIC; + +/* Values for Version field above */ + +enum AcpiMadtHtPicVersion { + ACPI_MADT_HT_PIC_VERSION_NONE = 0, + ACPI_MADT_HT_PIC_VERSION_V1 = 1, + ACPI_MADT_HT_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_eio_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT8 Cascade; + UINT8 Node; + UINT64 NodeMap; +} ACPI_MADT_EIO_PIC; + +/* Values for Version field above */ + +enum AcpiMadtEioPicVersion { + ACPI_MADT_EIO_PIC_VERSION_NONE = 0, + ACPI_MADT_EIO_PIC_VERSION_V1 = 1, + ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 21: MSI Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_msi_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT64 MsgAddress; + UINT32 Start; + UINT32 Count; +} ACPI_MADT_MSI_PIC; + +/* Values for Version field above */ + +enum AcpiMadtMsiPicVersion { + ACPI_MADT_MSI_PIC_VERSION_NONE = 0, + ACPI_MADT_MSI_PIC_VERSION_V1 = 1, + ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_bio_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT64 Address; + UINT16 Size; + UINT16 Id; + UINT16 GsiBase; +} ACPI_MADT_BIO_PIC; + +/* Values for Version field above */ + +enum AcpiMadtBioPicVersion { + ACPI_MADT_BIO_PIC_VERSION_NONE = 0, + ACPI_MADT_BIO_PIC_VERSION_V1 = 1, + ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 23: LPC Interrupt Controller (ACPI 6.5) */ + +typedef struct acpi_madt_lpc_pic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT64 Address; + UINT16 Size; + UINT8 Cascade; +} ACPI_MADT_LPC_PIC; + +/* Values for Version field above */ + +enum AcpiMadtLpcPicVersion { + ACPI_MADT_LPC_PIC_VERSION_NONE = 0, + ACPI_MADT_LPC_PIC_VERSION_V1 = 1, + ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 24: RISC-V INTC */ +typedef struct acpi_madt_rintc { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT8 Reserved; + UINT32 Flags; + UINT64 HartId; + UINT32 Uid; /* ACPI processor UID */ + UINT32 ExtIntcId; /* External INTC Id */ + UINT64 ImsicAddr; /* IMSIC base address */ + UINT32 ImsicSize; /* IMSIC size */ +} ACPI_MADT_RINTC; + +/* Values for RISC-V INTC Version field above */ + +enum AcpiMadtRintcVersion { + ACPI_MADT_RINTC_VERSION_NONE = 0, + ACPI_MADT_RINTC_VERSION_V1 = 1, + ACPI_MADT_RINTC_VERSION_RESERVED = 2 /* 2 and greater are reserved */ +}; + +/* 25: RISC-V IMSIC */ +typedef struct acpi_madt_imsic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT8 Reserved; + UINT32 Flags; + UINT16 NumIds; + UINT16 NumGuestIds; + UINT8 GuestIndexBits; + UINT8 HartIndexBits; + UINT8 GroupIndexBits; + UINT8 GroupIndexShift; +} ACPI_MADT_IMSIC; + +/* 26: RISC-V APLIC */ +typedef struct acpi_madt_aplic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT8 Id; + UINT32 Flags; + UINT8 HwId[8]; + UINT16 NumIdcs; + UINT16 NumSources; + UINT32 GsiBase; + UINT64 BaseAddr; + UINT32 Size; +} ACPI_MADT_APLIC; + +/* 27: RISC-V PLIC */ +typedef struct acpi_madt_plic { + ACPI_SUBTABLE_HEADER Header; + UINT8 Version; + UINT8 Id; + UINT8 HwId[8]; + UINT16 NumIrqs; + UINT16 MaxPrio; + UINT32 Flags; + UINT32 Size; + UINT64 BaseAddr; + UINT32 GsiBase; +} ACPI_MADT_PLIC; + + +/* 80: OEM data */ typedef struct acpi_madt_oem_data { - UINT8 OemData[0]; + ACPI_FLEX_ARRAY(UINT8, OemData); } ACPI_MADT_OEM_DATA; @@ -1484,6 +2046,132 @@ typedef struct acpi_table_mchi } ACPI_TABLE_MCHI; +/******************************************************************************* + * + * MPAM - Memory System Resource Partitioning and Monitoring + * + * Conforms to "ACPI for Memory System Resource Partitioning and Monitoring 2.0" + * Document number: ARM DEN 0065, December, 2022. + * + ******************************************************************************/ + +/* MPAM RIS locator types. Table 11, Location types */ +enum AcpiMpamLocatorType { + ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE = 0, + ACPI_MPAM_LOCATION_TYPE_MEMORY = 1, + ACPI_MPAM_LOCATION_TYPE_SMMU = 2, + ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE = 3, + ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE = 4, + ACPI_MPAM_LOCATION_TYPE_INTERCONNECT = 5, + ACPI_MPAM_LOCATION_TYPE_UNKNOWN = 0xFF +}; + +/* MPAM Functional dependency descriptor. Table 10 */ +typedef struct acpi_mpam_func_deps +{ + UINT32 Producer; + UINT32 Reserved; +} ACPI_MPAM_FUNC_DEPS; + +/* MPAM Processor cache locator descriptor. Table 13 */ +typedef struct acpi_mpam_resource_cache_locator +{ + UINT64 CacheReference; + UINT32 Reserved; +} ACPI_MPAM_RESOURCE_CACHE_LOCATOR; + +/* MPAM Memory locator descriptor. Table 14 */ +typedef struct acpi_mpam_resource_memory_locator +{ + UINT64 ProximityDomain; + UINT32 Reserved; +} ACPI_MPAM_RESOURCE_MEMORY_LOCATOR; + +/* MPAM SMMU locator descriptor. Table 15 */ +typedef struct acpi_mpam_resource_smmu_locator +{ + UINT64 SmmuInterface; + UINT32 Reserved; +} ACPI_MPAM_RESOURCE_SMMU_INTERFACE; + +/* MPAM Memory-side cache locator descriptor. Table 16 */ +typedef struct acpi_mpam_resource_memcache_locator +{ + UINT8 Reserved[7]; + UINT8 Level; + UINT32 Reference; +} ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE; + +/* MPAM ACPI device locator descriptor. Table 17 */ +typedef struct acpi_mpam_resource_acpi_locator +{ + UINT64 AcpiHwId; + UINT32 AcpiUniqueId; +} ACPI_MPAM_RESOURCE_ACPI_INTERFACE; + +/* MPAM Interconnect locator descriptor. Table 18 */ +typedef struct acpi_mpam_resource_interconnect_locator +{ + UINT64 InterConnectDescTblOff; + UINT32 Reserved; +} ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE; + +/* MPAM Locator structure. Table 12 */ +typedef struct acpi_mpam_resource_generic_locator +{ + UINT64 Descriptor1; + UINT32 Descriptor2; +} ACPI_MPAM_RESOURCE_GENERIC_LOCATOR; + +typedef union acpi_mpam_resource_locator +{ + ACPI_MPAM_RESOURCE_CACHE_LOCATOR CacheLocator; + ACPI_MPAM_RESOURCE_MEMORY_LOCATOR MemoryLocator; + ACPI_MPAM_RESOURCE_SMMU_INTERFACE SmmuLocator; + ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE MemCacheLocator; + ACPI_MPAM_RESOURCE_ACPI_INTERFACE AcpiLocator; + ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE InterconnectIfcLocator; + ACPI_MPAM_RESOURCE_GENERIC_LOCATOR GenericLocator; +} ACPI_MPAM_RESOURCE_LOCATOR; + +/* Memory System Component Resource Node Structure Table 9 */ +typedef struct acpi_mpam_resource_node +{ + UINT32 Identifier; + UINT8 RISIndex; + UINT16 Reserved1; + UINT8 LocatorType; + ACPI_MPAM_RESOURCE_LOCATOR Locator; + UINT32 NumFunctionalDeps; +} ACPI_MPAM_RESOURCE_NODE; + +/* Memory System Component (MSC) Node Structure. Table 4 */ +typedef struct acpi_mpam_msc_node +{ + UINT16 Length; + UINT8 InterfaceType; + UINT8 Reserved; + UINT32 Identifier; + UINT64 BaseAddress; + UINT32 MMIOSize; + UINT32 OverflowInterrupt; + UINT32 OverflowInterruptFlags; + UINT32 Reserved1; + UINT32 OverflowInterruptAffinity; + UINT32 ErrorInterrupt; + UINT32 ErrorInterruptFlags; + UINT32 Reserved2; + UINT32 ErrorInterruptAffinity; + UINT32 MaxNrdyUsec; + UINT64 HardwareIdLinkedDevice; + UINT32 InstanceIdLinkedDevice; + UINT32 NumResourceNodes; +} ACPI_MPAM_MSC_NODE; + +typedef struct acpi_table_mpam +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ +} ACPI_TABLE_MPAM; /******************************************************************************* * @@ -1637,6 +2325,52 @@ typedef struct acpi_msct_proximity /******************************************************************************* * + * MRRM - Memory Range and Region Mapping (MRRM) table + * Conforms to "Intel Resource Director Technology Architecture Specification" + * Version 1.1, January 2025 + * + ******************************************************************************/ + +typedef struct acpi_table_mrrm +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT8 MaxMemRegion; /* Max Memory Regions supported */ + UINT8 Flags; /* Region assignment type */ + UINT8 Reserved[26]; + UINT8 Memory_Range_Entry[]; + +} ACPI_TABLE_MRRM; + +/* Flags */ +#define ACPI_MRRM_FLAGS_REGION_ASSIGNMENT_OS (1<<0) + +/******************************************************************************* + * + * Memory Range entry - Memory Range entry in MRRM table + * + ******************************************************************************/ + +typedef struct acpi_mrrm_mem_range_entry +{ + ACPI_SUBTBL_HDR_16 Header; + UINT32 Reserved0; /* Reserved */ + UINT64 AddrBase; /* Base addr of the mem range */ + UINT64 AddrLen; /* Length of the mem range */ + UINT16 RegionIdFlags; /* Valid local or remote Region-ID */ + UINT8 LocalRegionId; /* Platform-assigned static local Region-ID */ + UINT8 RemoteRegionId; /* Platform-assigned static remote Region-ID */ + UINT32 Reserved1; /* Reserved */ + /* Region-ID Programming Registers[] */ + +} ACPI_MRRM_MEM_RANGE_ENTRY; + +/* Values for RegionIdFlags above */ +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_LOCAL (1<<0) +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_REMOTE (1<<1) + + +/******************************************************************************* + * * MSDM - Microsoft Data Management table * * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", @@ -1762,7 +2496,7 @@ typedef struct acpi_nfit_interleave UINT16 Reserved; /* Reserved, must be zero */ UINT32 LineCount; UINT32 LineSize; - UINT32 LineOffset[1]; /* Variable length */ + UINT32 LineOffset[]; /* Variable length */ } ACPI_NFIT_INTERLEAVE; @@ -1773,7 +2507,7 @@ typedef struct acpi_nfit_smbios { ACPI_NFIT_HEADER Header; UINT32 Reserved; /* Reserved, must be zero */ - UINT8 Data[1]; /* Variable length */ + UINT8 Data[]; /* Variable length */ } ACPI_NFIT_SMBIOS; @@ -1839,7 +2573,7 @@ typedef struct acpi_nfit_flush_address UINT32 DeviceHandle; UINT16 HintCount; UINT8 Reserved[6]; /* Reserved, must be zero */ - UINT64 HintAddress[1]; /* Variable length */ + UINT64 HintAddress[]; /* Variable length */ } ACPI_NFIT_FLUSH_ADDRESS; @@ -1915,320 +2649,212 @@ typedef struct nfit_device_handle /******************************************************************************* * - * NHLT - Non HD Audio Link Table - * - * Conforms to: Intel Smart Sound Technology NHLT Specification - * Version 0.8.1, January 2020. + * NHLT - Non HDAudio Link Table + * Version 1 * ******************************************************************************/ -/* Main table */ - typedef struct acpi_table_nhlt { - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 EndpointCount; + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT8 EndpointsCount; + /* + * ACPI_NHLT_ENDPOINT Endpoints[]; + * ACPI_NHLT_CONFIG OEDConfig; + */ } ACPI_TABLE_NHLT; -typedef struct acpi_table_nhlt_endpoint_count -{ - UINT8 EndpointCount; - -} ACPI_TABLE_NHLT_ENDPOINT_COUNT; - typedef struct acpi_nhlt_endpoint { - UINT32 DescriptorLength; - UINT8 LinkType; - UINT8 InstanceId; - UINT16 VendorId; - UINT16 DeviceId; - UINT16 RevisionId; - UINT32 SubsystemId; - UINT8 DeviceType; - UINT8 Direction; - UINT8 VirtualBusId; + UINT32 Length; + UINT8 LinkType; + UINT8 InstanceId; + UINT16 VendorId; + UINT16 DeviceId; + UINT16 RevisionId; + UINT32 SubsystemId; + UINT8 DeviceType; + UINT8 Direction; + UINT8 VirtualBusId; + /* + * ACPI_NHLT_CONFIG DeviceConfig; + * ACPI_NHLT_FORMATS_CONFIG FormatsConfig; + * ACPI_NHLT_DEVICES_INFO DevicesInfo; + */ } ACPI_NHLT_ENDPOINT; -/* Types for LinkType field above */ +/* Values for LinkType field above */ -#define ACPI_NHLT_RESERVED_HD_AUDIO 0 -#define ACPI_NHLT_RESERVED_DSP 1 -#define ACPI_NHLT_PDM 2 -#define ACPI_NHLT_SSP 3 -#define ACPI_NHLT_RESERVED_SLIMBUS 4 -#define ACPI_NHLT_RESERVED_SOUNDWIRE 5 -#define ACPI_NHLT_TYPE_RESERVED 6 /* 6 and above are reserved */ - -/* All other values above are reserved */ +#define ACPI_NHLT_LINKTYPE_HDA 0 +#define ACPI_NHLT_LINKTYPE_DSP 1 +#define ACPI_NHLT_LINKTYPE_PDM 2 +#define ACPI_NHLT_LINKTYPE_SSP 3 +#define ACPI_NHLT_LINKTYPE_SLIMBUS 4 +#define ACPI_NHLT_LINKTYPE_SDW 5 +#define ACPI_NHLT_LINKTYPE_UAOL 6 /* Values for DeviceId field above */ -#define ACPI_NHLT_PDM_DMIC 0xAE20 -#define ACPI_NHLT_BT_SIDEBAND 0xAE30 -#define ACPI_NHLT_I2S_TDM_CODECS 0xAE23 +#define ACPI_NHLT_DEVICEID_DMIC 0xAE20 +#define ACPI_NHLT_DEVICEID_BT 0xAE30 +#define ACPI_NHLT_DEVICEID_I2S 0xAE34 /* Values for DeviceType field above */ -/* SSP Link */ - -#define ACPI_NHLT_LINK_BT_SIDEBAND 0 -#define ACPI_NHLT_LINK_FM 1 -#define ACPI_NHLT_LINK_MODEM 2 -/* 3 is reserved */ -#define ACPI_NHLT_LINK_SSP_ANALOG_CODEC 4 - -/* PDM Link */ - -#define ACPI_NHLT_PDM_ON_CAVS_1P8 0 -#define ACPI_NHLT_PDM_ON_CAVS_1P5 1 +/* Device types unique to endpoint of LinkType=PDM */ +#define ACPI_NHLT_DEVICETYPE_PDM 0 +#define ACPI_NHLT_DEVICETYPE_PDM_SKL 1 +/* Device types unique to endpoint of LinkType=SSP */ +#define ACPI_NHLT_DEVICETYPE_BT 0 +#define ACPI_NHLT_DEVICETYPE_FM 1 +#define ACPI_NHLT_DEVICETYPE_MODEM 2 +#define ACPI_NHLT_DEVICETYPE_CODEC 4 /* Values for Direction field above */ -#define ACPI_NHLT_DIR_RENDER 0 -#define ACPI_NHLT_DIR_CAPTURE 1 -#define ACPI_NHLT_DIR_RENDER_LOOPBACK 2 -#define ACPI_NHLT_DIR_RENDER_FEEDBACK 3 -#define ACPI_NHLT_DIR_RESERVED 4 /* 4 and above are reserved */ - -/* Capabilities = 2 */ +#define ACPI_NHLT_DIR_RENDER 0 +#define ACPI_NHLT_DIR_CAPTURE 1 -typedef struct acpi_nhlt_device_specific_config +typedef struct acpi_nhlt_config { - UINT32 CapabilitiesSize; - UINT8 VirtualSlot; - UINT8 ConfigType; + UINT32 CapabilitiesSize; + UINT8 Capabilities[1]; -} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG; +} ACPI_NHLT_CONFIG; -/* Capabilities = 3 */ - -typedef struct acpi_nhlt_device_specific_config_a -{ - UINT32 CapabilitiesSize; - UINT8 VirtualSlot; - UINT8 ConfigType; - UINT8 ArrayType; - -} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A; - -/* Capabilities = 3 */ - -typedef struct acpi_nhlt_device_specific_config_d +typedef struct acpi_nhlt_gendevice_config { - UINT8 VirtualSlot; - UINT8 ConfigType; - UINT8 ArrayType; - -} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D; + UINT8 VirtualSlot; + UINT8 ConfigType; -/* Values for Config Type above */ +} ACPI_NHLT_GENDEVICE_CONFIG; -#define ACPI_NHLT_CONFIG_TYPE_GENERIC 0x00 -#define ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY 0x01 -#define ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK 0x03 -#define ACPI_NHLT_CONFIG_TYPE_RESERVED 0x04 /* 4 and above are reserved */ +/* Values for ConfigType field above */ -/* Capabilities = 0 */ +#define ACPI_NHLT_CONFIGTYPE_GENERIC 0 +#define ACPI_NHLT_CONFIGTYPE_MICARRAY 1 -typedef struct acpi_nhlt_device_specific_config_b +typedef struct acpi_nhlt_micdevice_config { - UINT32 CapabilitiesSize; - -} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B; - -/* Capabilities = 1 */ + UINT8 VirtualSlot; + UINT8 ConfigType; + UINT8 ArrayType; -typedef struct acpi_nhlt_device_specific_config_c -{ - UINT32 CapabilitiesSize; - UINT8 VirtualSlot; - -} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C; - -typedef struct acpi_nhlt_render_device_specific_config -{ - UINT32 CapabilitiesSize; - UINT8 VirtualSlot; - -} ACPI_NHLT_RENDER_DEVICE_SPECIFIC_CONFIG; - -typedef struct acpi_nhlt_wave_extensible -{ - UINT16 FormatTag; - UINT16 ChannelCount; - UINT32 SamplesPerSec; - UINT32 AvgBytesPerSec; - UINT16 BlockAlign; - UINT16 BitsPerSample; - UINT16 ExtraFormatSize; - UINT16 ValidBitsPerSample; - UINT32 ChannelMask; - UINT8 SubFormatGuid[16]; +} ACPI_NHLT_MICDEVICE_CONFIG; -} ACPI_NHLT_WAVE_EXTENSIBLE; - -/* Values for ChannelMask above */ - -#define ACPI_NHLT_SPKR_FRONT_LEFT 0x1 -#define ACPI_NHLT_SPKR_FRONT_RIGHT 0x2 -#define ACPI_NHLT_SPKR_FRONT_CENTER 0x4 -#define ACPI_NHLT_SPKR_LOW_FREQ 0x8 -#define ACPI_NHLT_SPKR_BACK_LEFT 0x10 -#define ACPI_NHLT_SPKR_BACK_RIGHT 0x20 -#define ACPI_NHLT_SPKR_FRONT_LEFT_OF_CENTER 0x40 -#define ACPI_NHLT_SPKR_FRONT_RIGHT_OF_CENTER 0x80 -#define ACPI_NHLT_SPKR_BACK_CENTER 0x100 -#define ACPI_NHLT_SPKR_SIDE_LEFT 0x200 -#define ACPI_NHLT_SPKR_SIDE_RIGHT 0x400 -#define ACPI_NHLT_SPKR_TOP_CENTER 0x800 -#define ACPI_NHLT_SPKR_TOP_FRONT_LEFT 0x1000 -#define ACPI_NHLT_SPKR_TOP_FRONT_CENTER 0x2000 -#define ACPI_NHLT_SPKR_TOP_FRONT_RIGHT 0x4000 -#define ACPI_NHLT_SPKR_TOP_BACK_LEFT 0x8000 -#define ACPI_NHLT_SPKR_TOP_BACK_CENTER 0x10000 -#define ACPI_NHLT_SPKR_TOP_BACK_RIGHT 0x20000 - -typedef struct acpi_nhlt_format_config -{ - ACPI_NHLT_WAVE_EXTENSIBLE Format; - UINT32 CapabilitySize; - UINT8 Capabilities[]; - -} ACPI_NHLT_FORMAT_CONFIG; - -typedef struct acpi_nhlt_formats_config -{ - UINT8 FormatsCount; - -} ACPI_NHLT_FORMATS_CONFIG; - -typedef struct acpi_nhlt_device_specific_hdr -{ - UINT8 VirtualSlot; - UINT8 ConfigType; +/* Values for ArrayType field above */ -} ACPI_NHLT_DEVICE_SPECIFIC_HDR; - -/* Types for ConfigType above */ - -#define ACPI_NHLT_GENERIC 0 -#define ACPI_NHLT_MIC 1 -#define ACPI_NHLT_RENDER 3 - -typedef struct acpi_nhlt_mic_device_specific_config -{ - ACPI_NHLT_DEVICE_SPECIFIC_HDR DeviceConfig; - UINT8 ArrayTypeExt; - -} ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG; - -/* Values for ArrayTypeExt above */ - -#define ACPI_NHLT_ARRAY_TYPE_RESERVED 0x09 /* 9 and below are reserved */ -#define ACPI_NHLT_SMALL_LINEAR_2ELEMENT 0x0A -#define ACPI_NHLT_BIG_LINEAR_2ELEMENT 0x0B -#define ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT 0x0C -#define ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT 0x0D -#define ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT 0x0E -#define ACPI_NHLT_VENDOR_DEFINED 0x0F -#define ACPI_NHLT_ARRAY_TYPE_MASK 0x0F -#define ACPI_NHLT_ARRAY_TYPE_EXT_MASK 0x10 - -#define ACPI_NHLT_NO_EXTENSION 0x0 -#define ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT (1<<4) - -typedef struct acpi_nhlt_vendor_mic_count -{ - UINT8 MicrophoneCount; - -} ACPI_NHLT_VENDOR_MIC_COUNT; +#define ACPI_NHLT_ARRAYTYPE_LINEAR2_SMALL 0xA +#define ACPI_NHLT_ARRAYTYPE_LINEAR2_BIG 0xB +#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO1 0xC +#define ACPI_NHLT_ARRAYTYPE_PLANAR4_LSHAPED 0xD +#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO2 0xE +#define ACPI_NHLT_ARRAYTYPE_VENDOR 0xF typedef struct acpi_nhlt_vendor_mic_config { - UINT8 Type; - UINT8 Panel; - UINT16 SpeakerPositionDistance; /* mm */ - UINT16 HorizontalOffset; /* mm */ - UINT16 VerticalOffset; /* mm */ - UINT8 FrequencyLowBand; /* 5*Hz */ - UINT8 FrequencyHighBand; /* 500*Hz */ - UINT16 DirectionAngle; /* -180 - + 180 */ - UINT16 ElevationAngle; /* -180 - + 180 */ - UINT16 WorkVerticalAngleBegin; /* -180 - + 180 with 2 deg step */ - UINT16 WorkVerticalAngleEnd; /* -180 - + 180 with 2 deg step */ - UINT16 WorkHorizontalAngleBegin; /* -180 - + 180 with 2 deg step */ - UINT16 WorkHorizontalAngleEnd; /* -180 - + 180 with 2 deg step */ + UINT8 Type; + UINT8 Panel; + UINT16 SpeakerPositionDistance; /* mm */ + UINT16 HorizontalOffset; /* mm */ + UINT16 VerticalOffset; /* mm */ + UINT8 FrequencyLowBand; /* 5*Hz */ + UINT8 FrequencyHighBand; /* 500*Hz */ + UINT16 DirectionAngle; /* -180 - +180 */ + UINT16 ElevationAngle; /* -180 - +180 */ + UINT16 WorkVerticalAngleBegin; /* -180 - +180 with 2 deg step */ + UINT16 WorkVerticalAngleEnd; /* -180 - +180 with 2 deg step */ + UINT16 WorkHorizontalAngleBegin; /* -180 - +180 with 2 deg step */ + UINT16 WorkHorizontalAngleEnd; /* -180 - +180 with 2 deg step */ } ACPI_NHLT_VENDOR_MIC_CONFIG; /* Values for Type field above */ -#define ACPI_NHLT_MIC_OMNIDIRECTIONAL 0 -#define ACPI_NHLT_MIC_SUBCARDIOID 1 -#define ACPI_NHLT_MIC_CARDIOID 2 -#define ACPI_NHLT_MIC_SUPER_CARDIOID 3 -#define ACPI_NHLT_MIC_HYPER_CARDIOID 4 -#define ACPI_NHLT_MIC_8_SHAPED 5 -#define ACPI_NHLT_MIC_RESERVED6 6 /* 6 is reserved */ -#define ACPI_NHLT_MIC_VENDOR_DEFINED 7 -#define ACPI_NHLT_MIC_RESERVED 8 /* 8 and above are reserved */ +#define ACPI_NHLT_MICTYPE_OMNIDIRECTIONAL 0 +#define ACPI_NHLT_MICTYPE_SUBCARDIOID 1 +#define ACPI_NHLT_MICTYPE_CARDIOID 2 +#define ACPI_NHLT_MICTYPE_SUPERCARDIOID 3 +#define ACPI_NHLT_MICTYPE_HYPERCARDIOID 4 +#define ACPI_NHLT_MICTYPE_8SHAPED 5 +#define ACPI_NHLT_MICTYPE_RESERVED 6 +#define ACPI_NHLT_MICTYPE_VENDORDEFINED 7 /* Values for Panel field above */ -#define ACPI_NHLT_MIC_POSITION_TOP 0 -#define ACPI_NHLT_MIC_POSITION_BOTTOM 1 -#define ACPI_NHLT_MIC_POSITION_LEFT 2 -#define ACPI_NHLT_MIC_POSITION_RIGHT 3 -#define ACPI_NHLT_MIC_POSITION_FRONT 4 -#define ACPI_NHLT_MIC_POSITION_BACK 5 -#define ACPI_NHLT_MIC_POSITION_RESERVED 6 /* 6 and above are reserved */ +#define ACPI_NHLT_MICLOCATION_TOP 0 +#define ACPI_NHLT_MICLOCATION_BOTTOM 1 +#define ACPI_NHLT_MICLOCATION_LEFT 2 +#define ACPI_NHLT_MICLOCATION_RIGHT 3 +#define ACPI_NHLT_MICLOCATION_FRONT 4 +#define ACPI_NHLT_MICLOCATION_REAR 5 -typedef struct acpi_nhlt_vendor_mic_device_specific_config +typedef struct acpi_nhlt_vendor_micdevice_config { - ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG MicArrayDeviceConfig; - UINT8 NumberOfMicrophones; - ACPI_NHLT_VENDOR_MIC_CONFIG MicConfig[]; /* Indexed by NumberOfMicrophones */ - -} ACPI_NHLT_VENDOR_MIC_DEVICE_SPECIFIC_CONFIG; + UINT8 VirtualSlot; + UINT8 ConfigType; + UINT8 ArrayType; + UINT8 MicsCount; + ACPI_NHLT_VENDOR_MIC_CONFIG Mics[]; -/* Microphone SNR and Sensitivity extension */ +} ACPI_NHLT_VENDOR_MICDEVICE_CONFIG; -typedef struct acpi_nhlt_mic_snr_sensitivity_extension +typedef union acpi_nhlt_device_config { - UINT32 SNR; - UINT32 Sensitivity; - -} ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION; + UINT8 VirtualSlot; + ACPI_NHLT_GENDEVICE_CONFIG Gen; + ACPI_NHLT_MICDEVICE_CONFIG Mic; + ACPI_NHLT_VENDOR_MICDEVICE_CONFIG VendorMic; -/* Render device with feedback */ +} ACPI_NHLT_DEVICE_CONFIG; -typedef struct acpi_nhlt_render_feedback_device_specific_config +/* Inherited from Microsoft's WAVEFORMATEXTENSIBLE. */ +typedef struct acpi_nhlt_wave_formatext { - UINT8 FeedbackVirtualSlot; /* Render slot in case of capture */ - UINT16 FeedbackChannels; /* Informative only */ - UINT16 FeedbackValidBitsPerSample; + UINT16 FormatTag; + UINT16 ChannelCount; + UINT32 SamplesPerSec; + UINT32 AvgBytesPerSec; + UINT16 BlockAlign; + UINT16 BitsPerSample; + UINT16 ExtraFormatSize; + UINT16 ValidBitsPerSample; + UINT32 ChannelMask; + UINT8 Subformat[16]; -} ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG; +} ACPI_NHLT_WAVE_FORMATEXT; -/* Non documented structures */ +typedef struct acpi_nhlt_format_config +{ + ACPI_NHLT_WAVE_FORMATEXT Format; + ACPI_NHLT_CONFIG Config; + +} ACPI_NHLT_FORMAT_CONFIG; -typedef struct acpi_nhlt_device_info_count +typedef struct acpi_nhlt_formats_config { - UINT8 StructureCount; + UINT8 FormatsCount; + ACPI_NHLT_FORMAT_CONFIG Formats[]; -} ACPI_NHLT_DEVICE_INFO_COUNT; +} ACPI_NHLT_FORMATS_CONFIG; typedef struct acpi_nhlt_device_info { - UINT8 DeviceId[16]; - UINT8 DeviceInstanceId; - UINT8 DevicePortId; + UINT8 Id[16]; + UINT8 InstanceId; + UINT8 PortId; } ACPI_NHLT_DEVICE_INFO; +typedef struct acpi_nhlt_devices_info +{ + UINT8 DevicesCount; + ACPI_NHLT_DEVICE_INFO Devices[]; + +} ACPI_NHLT_DEVICES_INFO; + /******************************************************************************* * @@ -2946,6 +3572,148 @@ enum AcpiRasfStatus /******************************************************************************* * + * RAS2 - RAS2 Feature Table (ACPI 6.5) + * Version 1 + * + * + ******************************************************************************/ + +typedef struct acpi_table_ras2 { + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT16 Reserved; + UINT16 NumPccDescs; + +} ACPI_TABLE_RAS2; + +/* RAS2 Platform Communication Channel Descriptor */ + +typedef struct acpi_ras2_pcc_desc { + UINT8 ChannelId; + UINT16 Reserved; + UINT8 FeatureType; + UINT32 Instance; + +} ACPI_RAS2_PCC_DESC; + +/* RAS2 Platform Communication Channel Shared Memory Region */ + +typedef struct acpi_ras2_shmem { + UINT32 Signature; + UINT16 Command; + UINT16 Status; + UINT16 Version; + UINT8 Features[16]; + UINT8 SetCaps[16]; + UINT16 NumParamBlks; + UINT32 SetCapsStatus; + +} ACPI_RAS2_SHMEM; + +/* RAS2 Parameter Block Structure for PATROL_SCRUB */ + +typedef struct acpi_ras2_parameter_block +{ + UINT16 Type; + UINT16 Version; + UINT16 Length; + +} ACPI_RAS2_PARAMETER_BLOCK; + +/* RAS2 Parameter Block Structure for PATROL_SCRUB */ + +typedef struct acpi_ras2_patrol_scrub_param { + ACPI_RAS2_PARAMETER_BLOCK Header; + UINT16 Command; + UINT64 ReqAddrRange[2]; + UINT64 ActlAddrRange[2]; + UINT32 Flags; + UINT32 ScrubParamsOut; + UINT32 ScrubParamsIn; + +} ACPI_RAS2_PATROL_SCRUB_PARAM; + +/* Masks for Flags field above */ + +#define ACPI_RAS2_SCRUBBER_RUNNING 1 + +/* RAS2 Parameter Block Structure for LA2PA_TRANSLATION */ + +typedef struct acpi_ras2_la2pa_translation_parameter { + ACPI_RAS2_PARAMETER_BLOCK Header; + UINT16 AddrTranslationCommand; + UINT64 SubInstId; + UINT64 LogicalAddress; + UINT64 PhysicalAddress; + UINT32 Status; + +} ACPI_RAS2_LA2PA_TRANSLATION_PARAM; + +/* Channel Commands */ + +enum AcpiRas2Commands +{ + ACPI_RAS2_EXECUTE_RAS2_COMMAND = 1 +}; + +/* Platform RAS2 Features */ + +enum AcpiRas2Features +{ + ACPI_RAS2_PATROL_SCRUB_SUPPORTED = 0, + ACPI_RAS2_LA2PA_TRANSLATION = 1 +}; + +/* RAS2 Patrol Scrub Commands */ + +enum AcpiRas2PatrolScrubCommands +{ + ACPI_RAS2_GET_PATROL_PARAMETERS = 1, + ACPI_RAS2_START_PATROL_SCRUBBER = 2, + ACPI_RAS2_STOP_PATROL_SCRUBBER = 3 +}; + +/* RAS2 LA2PA Translation Commands */ + +enum AcpiRas2La2PaTranslationCommands +{ + ACPI_RAS2_GET_LA2PA_TRANSLATION = 1, +}; + +/* RAS2 LA2PA Translation Status values */ + +enum AcpiRas2La2PaTranslationStatus +{ + ACPI_RAS2_LA2PA_TRANSLATION_SUCCESS = 0, + ACPI_RAS2_LA2PA_TRANSLATION_FAIL = 1, +}; + +/* Channel Command flags */ + +#define ACPI_RAS2_GENERATE_SCI (1<<15) + +/* Status values */ + +enum AcpiRas2Status +{ + ACPI_RAS2_SUCCESS = 0, + ACPI_RAS2_NOT_VALID = 1, + ACPI_RAS2_NOT_SUPPORTED = 2, + ACPI_RAS2_BUSY = 3, + ACPI_RAS2_FAILED = 4, + ACPI_RAS2_ABORTED = 5, + ACPI_RAS2_INVALID_DATA = 6 +}; + +/* Status flags */ + +#define ACPI_RAS2_COMMAND_COMPLETE (1) +#define ACPI_RAS2_SCI_DOORBELL (1<<1) +#define ACPI_RAS2_ERROR (1<<2) +#define ACPI_RAS2_STATUS (0x1F<<3) + + +/******************************************************************************* + * * RGRT - Regulatory Graphics Resource Table * Version 1 * @@ -2976,6 +3744,160 @@ enum AcpiRgrtImageType /******************************************************************************* * + * RHCT - RISC-V Hart Capabilities Table + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_rhct { + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 Flags; /* RHCT flags */ + UINT64 TimeBaseFreq; + UINT32 NodeCount; + UINT32 NodeOffset; +} ACPI_TABLE_RHCT; + +/* RHCT Flags */ + +#define ACPI_RHCT_TIMER_CANNOT_WAKEUP_CPU (1) +/* + * RHCT subtables + */ +typedef struct acpi_rhct_node_header { + UINT16 Type; + UINT16 Length; + UINT16 Revision; +} ACPI_RHCT_NODE_HEADER; + +/* Values for RHCT subtable Type above */ + +enum acpi_rhct_node_type { + ACPI_RHCT_NODE_TYPE_ISA_STRING = 0x0000, + ACPI_RHCT_NODE_TYPE_CMO = 0x0001, + ACPI_RHCT_NODE_TYPE_MMU = 0x0002, + ACPI_RHCT_NODE_TYPE_RESERVED = 0x0003, + ACPI_RHCT_NODE_TYPE_HART_INFO = 0xFFFF, +}; + +/* + * RHCT node specific subtables + */ + +/* ISA string node structure */ +typedef struct acpi_rhct_isa_string { + UINT16 IsaLength; + char Isa[]; +} ACPI_RHCT_ISA_STRING; + +typedef struct acpi_rhct_cmo_node { + UINT8 Reserved; /* Must be zero */ + UINT8 CbomSize; /* CBOM size in powerof 2 */ + UINT8 CbopSize; /* CBOP size in powerof 2 */ + UINT8 CbozSize; /* CBOZ size in powerof 2 */ +} ACPI_RHCT_CMO_NODE; + +typedef struct acpi_rhct_mmu_node { + UINT8 Reserved; /* Must be zero */ + UINT8 MmuType; /* Virtual Address Scheme */ +} ACPI_RHCT_MMU_NODE; + +enum acpi_rhct_mmu_type { + ACPI_RHCT_MMU_TYPE_SV39 = 0, + ACPI_RHCT_MMU_TYPE_SV48 = 1, + ACPI_RHCT_MMU_TYPE_SV57 = 2 +}; + +/* Hart Info node structure */ +typedef struct acpi_rhct_hart_info { + UINT16 NumOffsets; + UINT32 Uid; /* ACPI processor UID */ +} ACPI_RHCT_HART_INFO; + +/******************************************************************************* + * + * RIMT - RISC-V IO Remapping Table + * + * https://github.com/riscv-non-isa/riscv-acpi-rimt + * + ******************************************************************************/ + +typedef struct acpi_table_rimt { + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 NumNodes; /* Number of RIMT Nodes */ + UINT32 NodeOffset; /* Offset to RIMT Node Array */ + UINT32 Reserved; +} ACPI_TABLE_RIMT; + +typedef struct acpi_rimt_node { + UINT8 Type; + UINT8 Revision; + UINT16 Length; + UINT16 Reserved; + UINT16 Id; + char NodeData[]; +} ACPI_RIMT_NODE; + +enum acpi_rimt_node_type { + ACPI_RIMT_NODE_TYPE_IOMMU = 0x0, + ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX = 0x1, + ACPI_RIMT_NODE_TYPE_PLAT_DEVICE = 0x2, +}; + +typedef struct acpi_rimt_iommu { + UINT8 HardwareId[8]; /* Hardware ID */ + UINT64 BaseAddress; /* Base Address */ + UINT32 Flags; /* Flags */ + UINT32 ProximityDomain; /* Proximity Domain */ + UINT16 PcieSegmentNumber; /* PCIe Segment number */ + UINT16 PcieBdf; /* PCIe B/D/F */ + UINT16 NumInterruptWires; /* Number of interrupt wires */ + UINT16 InterruptWireOffset; /* Interrupt wire array offset */ + UINT64 InterruptWire[]; /* Interrupt wire array */ +} ACPI_RIMT_IOMMU; + +/* IOMMU Node Flags */ +#define ACPI_RIMT_IOMMU_FLAGS_PCIE (1) +#define ACPI_RIMT_IOMMU_FLAGS_PXM_VALID (1 << 1) + +/* Interrupt Wire Structure */ +typedef struct acpi_rimt_iommu_wire_gsi { + UINT32 IrqNum; /* Interrupt Number */ + UINT32 Flags; /* Flags */ +} ACPI_RIMT_IOMMU_WIRE_GSI; + +/* Interrupt Wire Flags */ +#define ACPI_RIMT_GSI_LEVEL_TRIGGERRED (1) +#define ACPI_RIMT_GSI_ACTIVE_HIGH (1 << 1) + +typedef struct acpi_rimt_id_mapping { + UINT32 SourceIdBase; /* Source ID Base */ + UINT32 NumIds; /* Number of IDs */ + UINT32 DestIdBase; /* Destination Device ID Base */ + UINT32 DestOffset; /* Destination IOMMU Offset */ + UINT32 Flags; /* Flags */ +} ACPI_RIMT_ID_MAPPING; + +typedef struct acpi_rimt_pcie_rc { + UINT32 Flags; /* Flags */ + UINT16 Reserved; /* Reserved */ + UINT16 PcieSegmentNumber; /* PCIe Segment number */ + UINT16 IdMappingOffset; /* ID mapping array offset */ + UINT16 NumIdMappings; /* Number of ID mappings */ +} ACPI_RIMT_PCIE_RC; + +/* PCIe Root Complex Node Flags */ +#define ACPI_RIMT_PCIE_ATS_SUPPORTED (1) +#define ACPI_RIMT_PCIE_PRI_SUPPORTED (1 << 1) + +typedef struct acpi_rimt_platform_device { + UINT16 IdMappingOffset; /* ID Mapping array offset */ + UINT16 NumIdMappings; /* Number of ID mappings */ + char DeviceName[]; /* Device Object Name */ +} ACPI_RIMT_PLATFORM_DEVICE; + + +/******************************************************************************* + * * SBST - Smart Battery Specification Table * Version 1 * @@ -3173,6 +4095,30 @@ enum acpi_svkl_format ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */ }; +/******************************************************************************* + * + * SWFT - SoundWire File Table + * as described in Discovery and Configuration (DisCo) Specification + * for SoundWire® + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_swft +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + +} ACPI_TABLE_SWFT; + +typedef struct acpi_swft_file +{ + UINT16 VendorID; + UINT32 FileID; + UINT16 FileVersion; + UINT16 FileLength; + UINT8 FileData[]; + +} ACPI_SWFT_FILE; /******************************************************************************* * diff --git a/sys/contrib/dev/acpica/include/actbl3.h b/sys/contrib/dev/acpica/include/actbl3.h index 7cc633a27b7c..07bc8713becc 100644 --- a/sys/contrib/dev/acpica/include/actbl3.h +++ b/sys/contrib/dev/acpica/include/actbl3.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -243,10 +243,10 @@ typedef struct acpi_table_slit /******************************************************************************* * * SPCR - Serial Port Console Redirection table - * Version 2 + * Version 4 * * Conforms to "Serial Port Console Redirection Table", - * Version 1.03, August 10, 2015 + * Version 1.10, Jan 5, 2023 * ******************************************************************************/ @@ -264,7 +264,7 @@ typedef struct acpi_table_spcr UINT8 StopBits; UINT8 FlowControl; UINT8 TerminalType; - UINT8 Reserved1; + UINT8 Language; UINT16 PciDeviceId; UINT16 PciVendorId; UINT8 PciBus; @@ -272,7 +272,11 @@ typedef struct acpi_table_spcr UINT8 PciFunction; UINT32 PciFlags; UINT8 PciSegment; - UINT32 Reserved2; + UINT32 UartClkFreq; + UINT32 PreciseBaudrate; + UINT16 NameSpaceStringLength; + UINT16 NameSpaceStringOffset; + char NameSpaceString[]; } ACPI_TABLE_SPCR; @@ -353,7 +357,8 @@ enum AcpiSratType ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */ ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */ - ACPI_SRAT_TYPE_RESERVED = 7 /* 7 and greater are reserved */ + ACPI_SRAT_TYPE_RINTC_AFFINITY = 7, /* ACPI 6.6 */ + ACPI_SRAT_TYPE_RESERVED = 8 /* 8 and greater are reserved */ }; /* @@ -437,7 +442,7 @@ typedef struct acpi_srat_gicc_affinity #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ -/* 4: GCC ITS Affinity (ACPI 6.2) */ +/* 4: GIC ITS Affinity (ACPI 6.2) */ typedef struct acpi_srat_gic_its_affinity { @@ -454,13 +459,15 @@ typedef struct acpi_srat_gic_its_affinity * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY */ +#define ACPI_SRAT_DEVICE_HANDLE_SIZE 16 + typedef struct acpi_srat_generic_affinity { ACPI_SUBTABLE_HEADER Header; UINT8 Reserved; UINT8 DeviceHandleType; UINT32 ProximityDomain; - UINT8 DeviceHandle[16]; + UINT8 DeviceHandle[ACPI_SRAT_DEVICE_HANDLE_SIZE]; UINT32 Flags; UINT32 Reserved1; @@ -471,6 +478,23 @@ typedef struct acpi_srat_generic_affinity #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */ #define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */ +/* 7: RINTC Affinity Structure(ACPI 6.6) */ + +typedef struct acpi_srat_rintc_affinity +{ + ACPI_SUBTABLE_HEADER Header; + UINT16 Reserved; + UINT32 ProximityDomain; + UINT32 AcpiProcessorUid; + UINT32 Flags; + UINT32 ClockDomain; + +} ACPI_SRAT_RINTC_AFFINITY; + +/* Flags for ACPI_SRAT_RINTC_AFFINITY */ + +#define ACPI_SRAT_RINTC_ENABLED (1) /* 00: Use affinity structure */ + /******************************************************************************* * * STAO - Status Override Table (_STA override) - ACPI 6.0 @@ -631,6 +655,8 @@ typedef struct acpi_table_tpm2 #define ACPI_TPM2_RESERVED10 10 #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ #define ACPI_TPM2_RESERVED 12 +#define ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON 13 +#define ACPI_TPM2_CRB_WITH_ARM_FFA 15 /* Optional trailer appears after any StartMethod subtables */ diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h index 99588f6717a0..3c95887b1678 100644 --- a/sys/contrib/dev/acpica/include/actypes.h +++ b/sys/contrib/dev/acpica/include/actypes.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -673,12 +673,12 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) #else #define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE)) -#define ACPI_COPY_NAMESEG(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE)) +#define ACPI_COPY_NAMESEG(dest,src) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE)) #endif /* Support for the special RSDP signature (8 characters) */ -#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) +#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, (sizeof(a) < 8) ? ACPI_NAMESEG_SIZE : 8)) #define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) /* Support for OEMx signature (x can be any character) */ @@ -741,9 +741,11 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_STATE_D0 (UINT8) 0 #define ACPI_STATE_D1 (UINT8) 1 #define ACPI_STATE_D2 (UINT8) 2 -#define ACPI_STATE_D3 (UINT8) 3 -#define ACPI_D_STATES_MAX ACPI_STATE_D3 -#define ACPI_D_STATE_COUNT 4 +#define ACPI_STATE_D3_HOT (UINT8) 3 +#define ACPI_STATE_D3_COLD (UINT8) 4 +#define ACPI_STATE_D3 ACPI_STATE_D3_COLD +#define ACPI_D_STATES_MAX ACPI_STATE_D3_COLD +#define ACPI_D_STATE_COUNT 5 #define ACPI_STATE_C0 (UINT8) 0 #define ACPI_STATE_C1 (UINT8) 1 @@ -1335,6 +1337,12 @@ typedef struct acpi_pcc_info { UINT8 *InternalBuffer; } ACPI_PCC_INFO; +/* Special Context data for FFH Opregion (ACPI 6.5) */ + +typedef struct acpi_ffh_info { + UINT64 Offset; + UINT64 Length; +} ACPI_FFH_INFO; typedef ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( @@ -1474,7 +1482,7 @@ typedef struct acpi_mem_space_context } ACPI_MEM_SPACE_CONTEXT; -typedef struct acpi_data_table_space_context +typedef struct acpi_data_table_mapping { void *Pointer; @@ -1555,6 +1563,7 @@ typedef enum #define ACPI_OSI_WIN_10_19H1 0x14 #define ACPI_OSI_WIN_10_20H1 0x15 #define ACPI_OSI_WIN_11 0x16 +#define ACPI_OSI_WIN_11_22H2 0x17 /* Definitions of getopt */ @@ -1567,4 +1576,12 @@ typedef enum #define ACPI_FALLTHROUGH do {} while(0) #endif +#ifndef ACPI_FLEX_ARRAY +#define ACPI_FLEX_ARRAY(TYPE, NAME) TYPE NAME[0] +#endif + +#ifndef ACPI_NONSTRING +#define ACPI_NONSTRING /* No terminating NUL character */ +#endif + #endif /* __ACTYPES_H__ */ diff --git a/sys/contrib/dev/acpica/include/acutils.h b/sys/contrib/dev/acpica/include/acutils.h index 5d49fa137c75..06b8eb0bda6b 100644 --- a/sys/contrib/dev/acpica/include/acutils.h +++ b/sys/contrib/dev/acpica/include/acutils.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -196,6 +196,8 @@ extern const char *AcpiGbl_SbDecode[]; extern const char *AcpiGbl_FcDecode[]; extern const char *AcpiGbl_PtDecode[]; extern const char *AcpiGbl_PtypDecode[]; +extern const char *AcpiGbl_ClockInputMode[]; +extern const char *AcpiGbl_ClockInputScale[]; #endif /* @@ -318,6 +320,31 @@ AcpiUtCheckAndRepairAscii ( /* + * utcksum - Checksum utilities + */ +UINT8 +AcpiUtGenerateChecksum ( + void *Table, + UINT32 Length, + UINT8 OriginalChecksum); + +UINT8 +AcpiUtChecksum ( + UINT8 *Buffer, + UINT32 Length); + +ACPI_STATUS +AcpiUtVerifyCdatChecksum ( + ACPI_TABLE_CDAT *CdatTable, + UINT32 Length); + +ACPI_STATUS +AcpiUtVerifyChecksum ( + ACPI_TABLE_HEADER *Table, + UINT32 Length); + + +/* * utnonansi - Non-ANSI C library functions */ void diff --git a/sys/contrib/dev/acpica/include/acuuid.h b/sys/contrib/dev/acpica/include/acuuid.h index bc41fa40bab9..071e9a5ad610 100644 --- a/sys/contrib/dev/acpica/include/acuuid.h +++ b/sys/contrib/dev/acpica/include/acuuid.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -211,5 +211,6 @@ #define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b" #define UUID_CORESIGHT_GRAPH "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd" #define UUID_USB4_CAPABILITIES "23a0d13a-26ab-486c-9c5f-0ffa525a575a" - +#define UUID_1ST_FUNCTION_ID "893f00a6-660c-494e-bcfd-3043f4fb67c0" +#define UUID_2ND_FUNCTION_ID "107ededd-d381-4fd7-8da9-08e9a6c79644" #endif /* __ACUUID_H__ */ diff --git a/sys/contrib/dev/acpica/include/amlcode.h b/sys/contrib/dev/acpica/include/amlcode.h index 25d591e55d95..6bb591904794 100644 --- a/sys/contrib/dev/acpica/include/amlcode.h +++ b/sys/contrib/dev/acpica/include/amlcode.h @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/amlresrc.h b/sys/contrib/dev/acpica/include/amlresrc.h index e89cd824d11d..4482ed378ab1 100644 --- a/sys/contrib/dev/acpica/include/amlresrc.h +++ b/sys/contrib/dev/acpica/include/amlresrc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -213,6 +213,8 @@ #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ #define ACPI_RESTAG_VENDORDATA "_VEN" +#define ACPI_RESTAG_FQN "_FQN" +#define ACPI_RESTAG_FQD "_FQD" /* Default sizes for "small" resource descriptors */ @@ -501,7 +503,10 @@ typedef struct aml_resource_extended_irq AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; UINT8 InterruptCount; - UINT32 Interrupts[1]; + union { + UINT32 Interrupt; + ACPI_FLEX_ARRAY(UINT32, Interrupts); + }; /* ResSourceIndex, ResSource optional fields follow */ } AML_RESOURCE_EXTENDED_IRQ; @@ -703,6 +708,23 @@ typedef struct aml_resource_pin_config } AML_RESOURCE_PIN_CONFIG; +#define AML_RESOURCE_CLOCK_INPUT_REVISION 1 /* ACPI 6.5 */ + +typedef struct aml_resource_clock_input +{ + AML_RESOURCE_LARGE_HEADER_COMMON + UINT8 RevisionId; + UINT16 Flags; + UINT16 FrequencyDivisor; + UINT32 FrequencyNumerator; + /* + * Optional fields follow immediately: + * 1) Resource Source index + * 2) Resource Source String + */ +} AML_RESOURCE_CLOCK_INPUT; + + #define AML_RESOURCE_PIN_CONFIG_REVISION 1 /* ACPI 6.2 */ typedef struct aml_resource_pin_group @@ -770,10 +792,6 @@ typedef struct aml_resource_pin_group_config #define AML_RESOURCE_PIN_GROUP_CONFIG_REVISION 1 /* ACPI 6.2 */ -/* restore default alignment */ - -#pragma pack() - /* Union of all resource descriptors, so we can allocate the worst case */ typedef union aml_resource @@ -819,6 +837,7 @@ typedef union aml_resource AML_RESOURCE_PIN_GROUP PinGroup; AML_RESOURCE_PIN_GROUP_FUNCTION PinGroupFunction; AML_RESOURCE_PIN_GROUP_CONFIG PinGroupConfig; + AML_RESOURCE_CLOCK_INPUT ClockInput; /* Utility overlays */ @@ -829,6 +848,9 @@ typedef union aml_resource } AML_RESOURCE; +/* restore default alignment */ + +#pragma pack() /* Interfaces used by both the disassembler and compiler */ diff --git a/sys/contrib/dev/acpica/include/platform/acenv.h b/sys/contrib/dev/acpica/include/platform/acenv.h index 6b0cd34880a3..b842965bfca0 100644 --- a/sys/contrib/dev/acpica/include/platform/acenv.h +++ b/sys/contrib/dev/acpica/include/platform/acenv.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -358,6 +358,8 @@ #elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI) #include "acefi.h" +#elif defined(__ZEPHYR__) +#include "aczephyr.h" #else /* Unknown environment */ @@ -401,6 +403,12 @@ #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pending) Pending = 0 #endif +/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */ + +#ifndef ACPI_SEMAPHORE_NULL +#define ACPI_SEMAPHORE_NULL NULL +#endif + /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ #ifndef ACPI_FLUSH_CPU_CACHE diff --git a/sys/contrib/dev/acpica/include/platform/acenvex.h b/sys/contrib/dev/acpica/include/platform/acenvex.h index 32db36c6e86c..e9632619abf5 100644 --- a/sys/contrib/dev/acpica/include/platform/acenvex.h +++ b/sys/contrib/dev/acpica/include/platform/acenvex.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/include/platform/acfreebsd.h b/sys/contrib/dev/acpica/include/platform/acfreebsd.h index 022f7165e3cb..b537a25f9fbd 100644 --- a/sys/contrib/dev/acpica/include/platform/acfreebsd.h +++ b/sys/contrib/dev/acpica/include/platform/acfreebsd.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -179,10 +179,10 @@ #include <sys/ctype.h> #include <sys/param.h> +#include <sys/stdarg.h> #include <sys/systm.h> #include <sys/libkern.h> #include <machine/acpica_machdep.h> -#include <machine/stdarg.h> #include "opt_acpi.h" diff --git a/sys/contrib/dev/acpica/include/platform/acgcc.h b/sys/contrib/dev/acpica/include/platform/acgcc.h index 50a440f82981..39ff864fa5d7 100644 --- a/sys/contrib/dev/acpica/include/platform/acgcc.h +++ b/sys/contrib/dev/acpica/include/platform/acgcc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License @@ -152,7 +152,6 @@ #ifndef __ACGCC_H__ #define __ACGCC_H__ -#ifndef _KERNEL /* * Use compiler specific <stdarg.h> is a good practice for even when * -nostdinc is specified (i.e., ACPI_USE_STANDARD_HEADERS undefined. @@ -165,6 +164,7 @@ typedef __builtin_va_list va_list; #define va_arg(v, l) __builtin_va_arg(v, l) #define va_copy(d, s) __builtin_va_copy(d, s) #else +#if !defined(__FreeBSD__) || !defined(_KERNEL) #include <stdarg.h> #endif #endif @@ -213,4 +213,25 @@ typedef __builtin_va_list va_list; #define ACPI_FALLTHROUGH __attribute__((__fallthrough__)) #endif +/* + * Flexible array members are not allowed to be part of a union under + * C99, but this is not for any technical reason. Work around the + * limitation. + */ +#ifndef __cplusplus +#define ACPI_FLEX_ARRAY(TYPE, NAME) \ + struct { \ + struct { } __Empty_ ## NAME; \ + TYPE NAME[]; \ + } +#endif + +/* + * Explicitly mark strings that lack a terminating NUL character so + * that ACPICA can be built with -Wunterminated-string-initialization. + */ +#if __has_attribute(__nonstring__) +#define ACPI_NONSTRING __attribute__((__nonstring__)) +#endif + #endif /* __ACGCC_H__ */ diff --git a/sys/contrib/dev/acpica/include/platform/acgccex.h b/sys/contrib/dev/acpica/include/platform/acgccex.h index 035b999d95c3..bb3b55cf2ca6 100644 --- a/sys/contrib/dev/acpica/include/platform/acgccex.h +++ b/sys/contrib/dev/acpica/include/platform/acgccex.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/os_specific/service_layers/osgendbg.c b/sys/contrib/dev/acpica/os_specific/service_layers/osgendbg.c index 56d4681f12d1..eb34274ce670 100644 --- a/sys/contrib/dev/acpica/os_specific/service_layers/osgendbg.c +++ b/sys/contrib/dev/acpica/os_specific/service_layers/osgendbg.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License diff --git a/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c b/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c index 92a461c68993..81cda5e4eb65 100644 --- a/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c +++ b/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. * All rights reserved. * * 2. License |