diff options
Diffstat (limited to 'sys/contrib/dev/acpica/common')
24 files changed, 2961 insertions, 1007 deletions
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 |