diff options
Diffstat (limited to 'source/common/dmtable.c')
-rw-r--r-- | source/common/dmtable.c | 103 |
1 files changed, 96 insertions, 7 deletions
diff --git a/source/common/dmtable.c b/source/common/dmtable.c index 3e4c6c34153c..ffec889a06de 100644 --- a/source/common/dmtable.c +++ b/source/common/dmtable.c @@ -184,6 +184,12 @@ static const char *AcpiDmAsfSubnames[] = "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmCedtSubnames[] = +{ + "CXL Host Bridge Structure", + "Unknown Subtable Type" /* Reserved */ +}; + static const char *AcpiDmDmarSubnames[] = { "Hardware Unit Definition", @@ -367,15 +373,24 @@ static const char *AcpiDmPcctSubnames[] = "HW-Reduced Comm Subspace Type2", /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 */ "Extended PCC Master Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE */ "Extended PCC Slave Subspace", /* ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE */ + "HW Registers based Comm Subspace", /* ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE */ "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmPhatSubnames[] = +{ + "Firmware Version Data", /* ACPI_PHAT_TYPE_FW_VERSION_DATA */ + "Firmware Health Data", /* ACPI_PHAT_TYPE_FW_HEALTH_DATA */ + "Unknown Subtable Type" /* Reserved */ +}; + static const char *AcpiDmPmttSubnames[] = { "Socket", /* ACPI_PMTT_TYPE_SOCKET */ "Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */ "Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */ - "Unknown Subtable Type" /* Reserved */ + "Unknown Subtable Type", /* Reserved */ + "Vendor Specific" /* ACPI_PMTT_TYPE_VENDOR */ }; static const char *AcpiDmPpttSubnames[] = @@ -434,6 +449,16 @@ static const char *AcpiDmLpitSubnames[] = "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmViotSubnames[] = +{ + "Unknown Subtable Type", /* 0 -Reserved */ + "PCI Range", + "MMIO Endpoint", + "VirtIO-PCI IOMMU", + "VirtIO-MMIO IOMMU", + "Unknown Subtable Type" /* Reserved */ +}; + #define ACPI_FADT_PM_RESERVED 9 static const char *AcpiDmFadtProfiles[] = @@ -474,8 +499,8 @@ static const char *AcpiDmGasAccessWidth[] = * handler. This table must be NULL terminated. RSDP and FACS are * special-cased elsewhere. * - * Note: Any tables added here should be duplicated within AcpiSupportedTables - * in the file common/ahtable.c + * Note: Any tables added here should be duplicated within + * AcpiGbl_SupportedTables in the file common/ahtable.c * ******************************************************************************/ @@ -485,6 +510,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt}, {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot}, + {ACPI_SIG_CEDT, NULL, AcpiDmDumpCedt, DtCompileCedt, TemplateCedt}, {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep}, {ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt}, {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2, AcpiDmDumpDbg2, DtCompileDbg2, TemplateDbg2}, @@ -512,6 +538,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit}, {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct}, {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt, AcpiDmDumpPdtt, DtCompilePdtt, TemplatePdtt}, + {ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat}, {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt}, {ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt}, {ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf}, @@ -529,6 +556,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, + {ACPI_SIG_VIOT, AcpiDmTableInfoViot, AcpiDmDumpViot, DtCompileViot, TemplateViot}, {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet}, {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat}, {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt}, @@ -936,6 +964,7 @@ AcpiDmDumpTable ( case ACPI_DMT_CHKSUM: case ACPI_DMT_SPACEID: case ACPI_DMT_ACCWIDTH: + case ACPI_DMT_CEDT: case ACPI_DMT_IVRS: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: @@ -952,6 +981,7 @@ AcpiDmDumpTable ( case ACPI_DMT_ERSTACT: case ACPI_DMT_ERSTINST: case ACPI_DMT_DMAR_SCOPE: + case ACPI_DMT_VIOT: ByteLength = 1; break; @@ -961,6 +991,7 @@ AcpiDmDumpTable ( case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: + case ACPI_DMT_PHAT: ByteLength = 2; break; @@ -1030,6 +1061,17 @@ AcpiDmDumpTable ( ByteLength = SubtableLength; break; + case ACPI_DMT_PMTT_VENDOR: + /* + * Calculate the length of the vendor data for the PMTT table: + * Length = (Current Subtable ptr + Subtable length) - + * Start of the vendor data (Target) + */ + ByteLength = ((ACPI_CAST_PTR (char, Table) + + (ACPI_CAST_PTR (ACPI_PMTT_HEADER, Table)->Length)) - + ACPI_CAST_PTR (char, Target)); + break; + case ACPI_DMT_STRING: ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1; @@ -1346,6 +1388,20 @@ AcpiDmDumpTable ( AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); break; + case ACPI_DMT_CEDT: + + /* CEDT subtable types */ + + Temp8 = *Target; + if (Temp8 > ACPI_CEDT_TYPE_RESERVED) + { + Temp8 = ACPI_CEDT_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmCedtSubnames[Temp8]); + break; + case ACPI_DMT_DMAR: /* DMAR subtable types */ @@ -1559,16 +1615,33 @@ AcpiDmDumpTable ( AcpiDmPcctSubnames[Temp8]); break; + case ACPI_DMT_PHAT: + + /* PMTT subtable types */ + + Temp16 = *Target; + if (Temp16 > ACPI_PHAT_TYPE_RESERVED) + { + Temp16 = ACPI_PHAT_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16(Target), + AcpiDmPhatSubnames[Temp16]); + break; + case ACPI_DMT_PMTT: /* PMTT subtable types */ Temp8 = *Target; - if (Temp8 > ACPI_PMTT_TYPE_RESERVED) + if (Temp8 == ACPI_PMTT_TYPE_VENDOR) + { + Temp8 = ACPI_PMTT_TYPE_RESERVED + 1; + } + else if (Temp8 > ACPI_PMTT_TYPE_RESERVED) { Temp8 = ACPI_PMTT_TYPE_RESERVED; } - AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPmttSubnames[Temp8]); break; @@ -1599,6 +1672,8 @@ AcpiDmDumpTable ( break; case ACPI_DMT_RAW_BUFFER: + case ACPI_DMT_BUFFER: + case ACPI_DMT_PMTT_VENDOR: if (ByteLength == 0) { @@ -1606,8 +1681,7 @@ AcpiDmDumpTable ( break; } - AcpiDmDumpBuffer (Table, CurrentOffset, ByteLength, - CurrentOffset, NULL); + AcpiDmDumpBuffer (Target, 0, ByteLength, 0, NULL); break; case ACPI_DMT_SDEV: @@ -1676,6 +1750,7 @@ AcpiDmDumpTable ( { case ACPI_IVRS_TYPE_HARDWARE1: case ACPI_IVRS_TYPE_HARDWARE2: + case ACPI_IVRS_TYPE_HARDWARE3: Name = AcpiDmIvrsSubnames[0]; break; @@ -1710,6 +1785,20 @@ AcpiDmDumpTable ( AcpiDmLpitSubnames[Temp32]); break; + case ACPI_DMT_VIOT: + + /* VIOT subtable types */ + + Temp8 = *Target; + if (Temp8 > ACPI_VIOT_RESERVED) + { + Temp8 = ACPI_VIOT_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmViotSubnames[Temp8]); + break; + case ACPI_DMT_EXIT: return (AE_OK); |