diff options
Diffstat (limited to 'source/common')
| -rw-r--r-- | source/common/ahids.c | 2 | ||||
| -rw-r--r-- | source/common/ahpredef.c | 1 | ||||
| -rw-r--r-- | source/common/ahtable.c | 1 | ||||
| -rw-r--r-- | source/common/ahuuids.c | 6 | ||||
| -rw-r--r-- | source/common/dmtable.c | 117 | ||||
| -rw-r--r-- | source/common/dmtbdump2.c | 185 | ||||
| -rw-r--r-- | source/common/dmtbdump3.c | 67 | ||||
| -rw-r--r-- | source/common/dmtbinfo2.c | 123 | ||||
| -rw-r--r-- | source/common/dmtbinfo3.c | 25 |
9 files changed, 477 insertions, 50 deletions
diff --git a/source/common/ahids.c b/source/common/ahids.c index 896e8cd61f46..018d009bb0c5 100644 --- a/source/common/ahids.c +++ b/source/common/ahids.c @@ -190,6 +190,7 @@ const AH_DEVICE_ID AslDeviceIds[] = {"ACPI0014", "Wireless Power Calibration Device"}, {"ACPI0015", "USB4 host interface device"}, {"ACPI0016", "Compute Express Link Host Bridge"}, + {"ACPI0019", "Firmware Inventory Device"}, {"ADMA0F28", "Intel Audio DMA"}, {"AMCR0F28", "Intel Audio Machine Driver"}, {"ATK4001", "Asus Radio Control Button"}, @@ -300,6 +301,7 @@ const AH_DEVICE_ID AslDeviceIds[] = {"PNP0C12", "Device Bay Controller"}, {"PNP0C14", "Windows Management Instrumentation Device"}, {"PNP0C15", "Docking Station"}, + {"PNP0C32", "Direct App Launch Button"}, {"PNP0C33", "Error Device"}, {"PNP0C40", "Standard Button Controller"}, {"PNP0C50", "HID Protocol Device (I2C bus)"}, diff --git a/source/common/ahpredef.c b/source/common/ahpredef.c index c51f7c679d37..601650e6f935 100644 --- a/source/common/ahpredef.c +++ b/source/common/ahpredef.c @@ -280,6 +280,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] = AH_PREDEF ("_HOT", "Hot Temperature", "Returns the critical temperature for sleep (entry to S4)"), AH_PREDEF ("_HPP", "Hot Plug Parameters", "Returns a list of hot-plug information for a PCI device"), AH_PREDEF ("_HPX", "Hot Plug Parameter Extensions", "Returns a list of hot-plug information for a PCI device. Supersedes _HPP"), + AH_PREDEF ("_VDM", "Voltage Domain", "A DWORD identifier specifying the voltage domain to which the processor belongs."), AH_PREDEF ("_HRV", "Hardware Revision", "Returns a hardware revision value"), AH_PREDEF ("_IFT", "IPMI Interface Type", "See the Intelligent Platform Management Interface Specification"), AH_PREDEF ("_INI", "Initialize", "Performs device specific initialization"), diff --git a/source/common/ahtable.c b/source/common/ahtable.c index 705a61882a99..46c6c3b381a5 100644 --- a/source/common/ahtable.c +++ b/source/common/ahtable.c @@ -229,6 +229,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_HMAT, "Heterogeneous Memory Attributes Table"}, {ACPI_SIG_HPET, "High Precision Event Timer Table"}, {ACPI_SIG_IORT, "IO Remapping Table"}, + {ACPI_SIG_IOVT, "I/O Virtualization Table"}, {ACPI_SIG_IVRS, "I/O Virtualization Reporting Structure"}, {ACPI_SIG_LPIT, "Low Power Idle Table"}, {ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"}, diff --git a/source/common/ahuuids.c b/source/common/ahuuids.c index dd311a46e811..2986f737977c 100644 --- a/source/common/ahuuids.c +++ b/source/common/ahuuids.c @@ -180,6 +180,11 @@ const AH_UUID Gbl_AcpiUuids[] = {"Device Labeling Interface", UUID_DEVICE_LABELING}, {"Physical Presence Interface", UUID_PHYSICAL_PRESENCE}, + {"[Trusted Platform Module]", NULL}, + {"TPM Hardware Information", UUID_HARDWARE_INFORMATION}, + {"TPM Start Method", UUID_START_METHOD}, + {"TPM Memory Clear", UUID_MEMORY_CLEAR}, + {"[Non-volatile DIMM and NFIT table]", NULL}, {"NVDIMM Device", UUID_NFIT_DIMM}, {"Volatile Memory Region", UUID_VOLATILE_MEMORY}, @@ -211,6 +216,7 @@ const AH_UUID Gbl_AcpiUuids[] = {"USB4 Capabilities", UUID_USB4_CAPABILITIES}, {"First Function ID for _DSM", UUID_1ST_FUNCTION_ID}, {"Second Function ID for _DSM", UUID_2ND_FUNCTION_ID}, + {"Fan Trip Points", UUID_FAN_TRIP_POINTS}, {NULL, NULL} }; diff --git a/source/common/dmtable.c b/source/common/dmtable.c index 02125db1bf18..6eb0fd65758e 100644 --- a/source/common/dmtable.c +++ b/source/common/dmtable.c @@ -299,6 +299,14 @@ static const char *AcpiDmEinjActions[] = "Get Command Status", "Set Error Type With Address", "Get Execute Timings", + "Unassigned", + "Unassigned", + "Unassigned", + "Unassigned", + "Unassigned", + "Unassigned", + "EinjV2 Set Error Type(deprecated)", + "EinjV2 Get Error Type", "Unknown Action" }; @@ -426,36 +434,39 @@ static const char *AcpiDmHmatSubnames[] = static const char *AcpiDmMadtSubnames[] = { - "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ - "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ - "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ - "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ - "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ - "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ - "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ - "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ - "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ - "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ - "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ - "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */ - "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */ - "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */ - "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 */ + "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ + "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ + "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ + "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ + "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ + "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ + "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ + "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ + "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ + "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ + "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ + "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */ + "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */ + "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */ + "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 */ + "Generic Interrupt v5 Router", /* ACPI_MADT_TYPE_GICV5_IRS */ + "Generic Interrupt v5 Translator Config", /* ACPI_MADT_TYPE_GICV5_ITS */ + "Generic Interrupt v5 Translator Entry", /* ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE */ + "Unknown Subtable Type", /* Reserved */ + "Types 80-FF are used for OEM data" /* Reserved for OEM data */ }; static const char *AcpiDmMpamSubnames[] = @@ -560,6 +571,20 @@ static const char *AcpiDmTpm2Subnames[] = "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmIovtSubnames[] = +{ + "IOMMUv1", + "Unknown Subtable Type" /* Reserved */ +}; + +static const char *AcpiDmIovtdevSubnames[] = +{ + "A single PCI device", + "Start of range", + "End of range", + "Unknown Subtable Type" /* Reserved */ +}; + static const char *AcpiDmIvrsSubnames[] = { "Hardware Definition Block (IVHD)", @@ -686,6 +711,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_HMAT, NULL, AcpiDmDumpHmat, DtCompileHmat, TemplateHmat}, {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet}, {ACPI_SIG_IORT, NULL, AcpiDmDumpIort, DtCompileIort, TemplateIort}, + {ACPI_SIG_IOVT, AcpiDmTableInfoIovt, AcpiDmDumpIovt, DtCompileIovt, TemplateIovt}, {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs}, {ACPI_SIG_LPIT, NULL, AcpiDmDumpLpit, DtCompileLpit, TemplateLpit}, {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt}, @@ -721,7 +747,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_SWFT, AcpiDmTableInfoSwft, AcpiDmDumpSwft, DtCompileSwft, TemplateSwft}, {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, {ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL, TemplateTdel}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, @@ -1145,6 +1171,7 @@ AcpiDmDumpTable ( case ACPI_DMT_ERSTACT: case ACPI_DMT_ERSTINST: case ACPI_DMT_DMAR_SCOPE: + case ACPI_DMT_IOVTDEV: case ACPI_DMT_VIOT: ByteLength = 1; @@ -1156,6 +1183,7 @@ AcpiDmDumpTable ( case ACPI_DMT_ERDT: case ACPI_DMT_HEST: case ACPI_DMT_HMAT: + case ACPI_DMT_IOVT: case ACPI_DMT_NFIT: case ACPI_DMT_PHAT: case ACPI_DMT_RHCT: @@ -2136,6 +2164,33 @@ AcpiDmDumpTable ( AcpiDmFadtProfiles[Temp8]); break; + case ACPI_DMT_IOVT: + + /* IOVT subtable types */ + + Temp16 = ACPI_GET16(Target); + if (Temp16 > ACPI_IOVT_IOMMU_RESERVED) + { + Temp16 = ACPI_IOVT_IOMMU_RESERVED; + } + + AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmIovtSubnames[Temp16]); + break; + + case ACPI_DMT_IOVTDEV: + + /* IOVT subtable types */ + + Temp8 = *Target; + if (Temp8 > ACPI_IOVT_DEVICE_ENTRY_RESERVED) + { + Temp8 = ACPI_IOVT_DEVICE_ENTRY_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmIovtdevSubnames[Temp8]); + break; + case ACPI_DMT_IVRS: /* IVRS subtable types */ diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c index f9145d7cb532..a5125bae971f 100644 --- a/source/common/dmtbdump2.c +++ b/source/common/dmtbdump2.c @@ -304,6 +304,14 @@ AcpiDmDumpIort ( IortRmr = ACPI_ADD_PTR (ACPI_IORT_RMR, IortNode, NodeOffset); break; + case ACPI_IORT_NODE_IWB: + + InfoTable = AcpiDmTableInfoIort7; + Length = ACPI_OFFSET (ACPI_IORT_IWB, DeviceName); + String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length); + Length += strlen (String) + 1; + break; + default: AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n", @@ -479,6 +487,140 @@ NextSubtable: /******************************************************************************* * + * FUNCTION: AcpiDmDumpIovt + * + * PARAMETERS: Table - A IOVT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a IOVT + * + ******************************************************************************/ + +void +AcpiDmDumpIovt ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + UINT32 Offset; + UINT32 EntryOffset; + UINT32 EntryLength; + UINT32 EntryType; + ACPI_IOVT_DEVICE_ENTRY *DeviceEntry; + ACPI_IOVT_HEADER *SubtableHeader; + ACPI_IOVT_IOMMU *Subtable; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_TABLE_IOVT *Iovt; + + + /* Main table */ + + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIovt); + if (ACPI_FAILURE (Status)) + { + return; + } + + Iovt = ACPI_CAST_PTR (ACPI_TABLE_IOVT, Table); + Offset = Iovt->IommuOffset; + + /* Subtables */ + + SubtableHeader = ACPI_ADD_PTR (ACPI_IOVT_HEADER, Table, Offset); + + while (Offset < Table->Length) + { + switch (SubtableHeader->Type) + { + + case ACPI_IOVT_IOMMU_V1: + + AcpiOsPrintf ("\n"); + InfoTable = AcpiDmTableInfoIovt0; + break; + + default: + + AcpiOsPrintf ("\n**** Unknown IOVT subtable type 0x%X\n", + SubtableHeader->Type); + + /* Attempt to continue */ + + if (!SubtableHeader->Length) + { + AcpiOsPrintf ("Invalid zero length subtable\n"); + return; + } + goto NextSubtable; + } + + /* Dump the subtable */ + + Status = AcpiDmDumpTable (Table->Length, Offset, SubtableHeader, + SubtableHeader->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* The hardware subtables (IOVT) can contain multiple device entries */ + + if (SubtableHeader->Type == ACPI_IOVT_IOMMU_V1) + { + Subtable = ACPI_ADD_PTR (ACPI_IOVT_IOMMU, Table, Offset); + + EntryOffset = Offset + Subtable->DeviceEntryOffset; + /* Process all of the Device Entries */ + + do { + AcpiOsPrintf ("\n"); + + DeviceEntry = ACPI_ADD_PTR (ACPI_IOVT_DEVICE_ENTRY, + Table, EntryOffset); + EntryType = DeviceEntry->Type; + EntryLength = DeviceEntry->Length; + + switch (EntryType) + { + case ACPI_IOVT_DEVICE_ENTRY_SINGLE: + case ACPI_IOVT_DEVICE_ENTRY_START: + case ACPI_IOVT_DEVICE_ENTRY_END: + InfoTable = AcpiDmTableInfoIovtdev; + break; + + default: + InfoTable = AcpiDmTableInfoIovtdev; + AcpiOsPrintf ( + "\n**** Unknown IOVT device entry type/length: " + "0x%.2X/0x%X at offset 0x%.4X: (header below)\n", + EntryType, EntryLength, EntryOffset); + break; + } + + /* Dump the Device Entry */ + + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + DeviceEntry, EntryLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } + + EntryOffset += EntryLength; + } while (EntryOffset < (Offset + Subtable->Header.Length)); + } + +NextSubtable: + /* Point to next subtable */ + + Offset += SubtableHeader->Length; + SubtableHeader = ACPI_ADD_PTR (ACPI_IOVT_HEADER, SubtableHeader, SubtableHeader->Length); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpIvrs * * PARAMETERS: Table - A IVRS table @@ -1055,6 +1197,21 @@ AcpiDmDumpMadt ( InfoTable = AcpiDmTableInfoMadt27; break; + case ACPI_MADT_TYPE_GICV5_IRS: + + InfoTable = AcpiDmTableInfoMadt28; + break; + + case ACPI_MADT_TYPE_GICV5_ITS: + + InfoTable = AcpiDmTableInfoMadt29; + break; + + case ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE: + + InfoTable = AcpiDmTableInfoMadt30; + break; + default: if ((Subtable->Type >= ACPI_MADT_TYPE_RESERVED) && @@ -2290,8 +2447,16 @@ AcpiDmDumpPptt ( case ACPI_PPTT_TYPE_CACHE: - InfoTable = AcpiDmTableInfoPptt1; - Length = sizeof (ACPI_PPTT_CACHE); + if (Table->Revision < 3) + { + InfoTable = AcpiDmTableInfoPptt1; + Length = sizeof (ACPI_PPTT_CACHE); + } + else + { + InfoTable = AcpiDmTableInfoPptt1a; + Length = sizeof (ACPI_PPTT_CACHE_V1); + } break; case ACPI_PPTT_TYPE_ID: @@ -2350,22 +2515,6 @@ AcpiDmDumpPptt ( SubtableOffset += 4; } break; - - case ACPI_PPTT_TYPE_CACHE: - - if (Table->Revision < 3) - { - break; - } - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, - ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset), - sizeof (ACPI_PPTT_CACHE_V1), AcpiDmTableInfoPptt1a); - if (ACPI_FAILURE (Status)) - { - return; - } - break; - default: break; diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c index 503bad5ff22d..544792926b84 100644 --- a/source/common/dmtbdump3.c +++ b/source/common/dmtbdump3.c @@ -492,6 +492,73 @@ AcpiDmDumpSvkl ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpSwft + * + * PARAMETERS: Table - A SWFT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a SWFT. This is a variable-length + * table that contains an open-ended number of SoundWire files + * after the end of the header. + * + ******************************************************************************/ + +void +AcpiDmDumpSwft ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + UINT32 Length = Table->Length; + UINT32 Offset = sizeof (ACPI_TABLE_SWFT); + ACPI_SWFT_FILE *SubtableHdr; + ACPI_SWFT_FILE *SubtableData; + + + /* Main table */ + + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSwft); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* The rest of the table consists of subtables (single type) */ + + while (Offset < Table->Length) + { + SubtableHdr = ACPI_ADD_PTR (ACPI_SWFT_FILE, Table, Offset); + + /* Dump the subtable */ + + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, Offset, SubtableHdr, + sizeof (ACPI_SWFT_FILE), AcpiDmTableInfoSwftFileHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += sizeof(ACPI_SWFT_FILE); + + SubtableData = ACPI_ADD_PTR (ACPI_SWFT_FILE, Table, Offset); + + Status = AcpiDmDumpTable (Table->Length, Offset, SubtableData, + SubtableHdr->FileLength - sizeof(ACPI_SWFT_FILE), AcpiDmTableInfoSwftFileData); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Point to next subtable */ + + Offset += SubtableHdr->FileLength - sizeof(ACPI_SWFT_FILE); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpTcpa * * PARAMETERS: Table - A TCPA table diff --git a/source/common/dmtbinfo2.c b/source/common/dmtbinfo2.c index 570540e50991..c936af40586d 100644 --- a/source/common/dmtbinfo2.c +++ b/source/common/dmtbinfo2.c @@ -459,6 +459,74 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort6a[] = ACPI_DMT_TERMINATOR }; +/* 0x07: IWB */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoIort7[] = +{ + {ACPI_DMT_UINT64, ACPI_IORT7_OFFSET (BaseAddress), "Config Frame base", 0}, + {ACPI_DMT_UINT16, ACPI_IORT7_OFFSET (IwbIndex), "IWB Index", 0}, + {ACPI_DMT_STRING, ACPI_IORT7_OFFSET (DeviceName[0]), "IWB Device Name", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * + * IOVT - I/O Virtualization Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoIovt[] = +{ + {ACPI_DMT_UINT16, ACPI_IOVT_OFFSET (IommuCount), "IOMMU Count", 0}, + {ACPI_DMT_UINT16, ACPI_IOVT_OFFSET (IommuOffset), "IOMMU Offset", 0}, + {ACPI_DMT_UINT64, ACPI_IOVT_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* IOVT Subtables */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoIovt0[] = +{ + {ACPI_DMT_IOVT, ACPI_IOVTH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT16, ACPI_IOVTH_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "PCI Device", 0}, + {ACPI_DMT_FLAG1, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0}, + {ACPI_DMT_FLAG2, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "Manageable Devices Range", 0}, + {ACPI_DMT_FLAG3, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "HW Capability Supported", 0}, + {ACPI_DMT_FLAG4, ACPI_IOVT0_FLAG_OFFSET (Flags,0), "MSI Interrupt Address", 0}, + {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (Segment), "PCI Segment Number", 0}, + {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (PhyWidth), "Physical Address Width", 0}, + {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (VirtWidth), "Virtual Address Width", 0}, + {ACPI_DMT_UINT16, ACPI_IOVT0_OFFSET (MaxPageLevel), "Max Page Level", 0}, + {ACPI_DMT_UINT64, ACPI_IOVT0_OFFSET (PageSize), "Page Size Supported", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceId), "IOMMU DeviceID", 0}, + {ACPI_DMT_UINT64, ACPI_IOVT0_OFFSET (BaseAddress), "IOMMU Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (AddressSpaceSize), "IOMMU Register Size", 0}, + {ACPI_DMT_UINT8, ACPI_IOVT0_OFFSET (InterruptType), "Interrupt Type", 0}, + {ACPI_DMT_UINT24, ACPI_IOVT0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (GsiNumber), "Global System Interrupt", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (ProximityDomain), "Proximity Domain", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (MaxDeviceNum), "Max Device Num", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceEntryNum), "Number of Device Entries", 0}, + {ACPI_DMT_UINT32, ACPI_IOVT0_OFFSET (DeviceEntryOffset), "Offset of Device Entries", 0}, + ACPI_DMT_TERMINATOR +}; + +/* device entry */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoIovtdev[] = +{ + {ACPI_DMT_IOVTDEV, ACPI_IOVTDEV_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_IOVTDEV_OFFSET (Length), "Length", 0}, + {ACPI_DMT_UINT8, ACPI_IOVTDEV_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT24, ACPI_IOVTDEV_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_IOVTDEV_OFFSET (DeviceId), "DeviceID", 0}, + ACPI_DMT_TERMINATOR +}; + + /******************************************************************************* * * IVRS - I/O Virtualization Reporting Structure @@ -995,13 +1063,14 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15a[] = ACPI_DMT_TERMINATOR }; -/* 16: Multiprocessor wakeup structure (ACPI 6.4) */ +/* 16: Multiprocessor wakeup structure (ACPI 6.6) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt16[] = { {ACPI_DMT_UINT16, ACPI_MADT16_OFFSET (MailboxVersion), "Mailbox Version", 0}, {ACPI_DMT_UINT32, ACPI_MADT16_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_MADT16_OFFSET (BaseAddress), "Mailbox Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT16_OFFSET (ResetVector), "ResetVector", 0}, ACPI_DMT_TERMINATOR }; @@ -1147,6 +1216,39 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt27[] = ACPI_DMT_TERMINATOR }; +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt28[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT28_OFFSET (Version), "Gic version", 0}, + {ACPI_DMT_UINT8, ACPI_MADT28_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (IrsId), "Irs Id", 0}, + {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT28_FLAG_OFFSET (Flags,0), "GICV5 IRS non-coherent", 0}, + {ACPI_DMT_UINT32, ACPI_MADT28_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_MADT28_OFFSET (ConfigBaseAddress), "Irs Config Frame Physical Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_MADT28_OFFSET (SetlpiBaseAddress), "Irs Setlpi Frame Physical Base Address", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt29[] = +{ + {ACPI_DMT_UINT8, ACPI_MADT29_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_MADT29_FLAG_OFFSET (Flags,0), "GICV5 ITS non-coherent", 0}, + {ACPI_DMT_UINT8, ACPI_MADT29_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT29_OFFSET (TranslatorId), "Gic Its Id", 0}, + {ACPI_DMT_UINT64, ACPI_MADT29_OFFSET (BaseAddress), "Physical Base Address", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt30[] = +{ + {ACPI_DMT_UINT16, ACPI_MADT30_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (LinkedTranslatorId), "Linked Its Id", 0}, + {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (TranslateFrameId), "Its Transalte Id", 0}, + {ACPI_DMT_UINT32, ACPI_MADT30_OFFSET (Reserved2), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_MADT30_OFFSET (BaseAddress), "Its Translate Frame Physical Base Address", 0}, + ACPI_DMT_TERMINATOR +}; + /* 128: OEM data structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt128[] = @@ -2031,6 +2133,25 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] = ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[] = { + {ACPI_DMT_UINT16, ACPI_PPTT1A_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (Flags), "Flags (decoded below)", 0}, + {ACPI_DMT_FLAG0, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Size valid", 0}, + {ACPI_DMT_FLAG1, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Number of Sets valid", 0}, + {ACPI_DMT_FLAG2, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Associativity valid", 0}, + {ACPI_DMT_FLAG3, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Allocation Type valid", 0}, + {ACPI_DMT_FLAG4, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Cache Type valid", 0}, + {ACPI_DMT_FLAG5, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Write Policy valid", 0}, + {ACPI_DMT_FLAG6, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Line Size valid", 0}, + {ACPI_DMT_FLAG7, ACPI_PPTT1A_FLAG_OFFSET (Flags,0), "Cache ID valid", 0}, + {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (NextLevelOfCache), "Next Level of Cache", 0}, + {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (Size), "Size", 0}, + {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (NumberOfSets), "Number of Sets", 0}, + {ACPI_DMT_UINT8, ACPI_PPTT1A_OFFSET (Associativity), "Associativity", 0}, + {ACPI_DMT_UINT8, ACPI_PPTT1A_OFFSET (Attributes), "Attributes", 0}, + {ACPI_DMT_FLAGS0, ACPI_PPTT1A_OFFSET (Attributes), "Allocation Type", 0}, + {ACPI_DMT_FLAGS2, ACPI_PPTT1A_OFFSET (Attributes), "Cache Type", 0}, + {ACPI_DMT_FLAG4, ACPI_PPTT1A_OFFSET (Attributes), "Write Policy", 0}, + {ACPI_DMT_UINT16, ACPI_PPTT1A_OFFSET (LineSize), "Line Size", 0}, {ACPI_DMT_UINT32, ACPI_PPTT1A_OFFSET (CacheId), "Cache ID", 0}, ACPI_DMT_TERMINATOR }; diff --git a/source/common/dmtbinfo3.c b/source/common/dmtbinfo3.c index 24187f6afbc7..2b5891c0500e 100644 --- a/source/common/dmtbinfo3.c +++ b/source/common/dmtbinfo3.c @@ -472,6 +472,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[] = ACPI_DMT_TERMINATOR }; +/******************************************************************************* + * + * SWFT - SoundWire File Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoSwft[] = +{ + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileHdr[] = +{ + {ACPI_DMT_UINT16, ACPI_SWFT_FILE_OFFSET (VendorID), "File Vendor ID", 0}, + {ACPI_DMT_UINT32, ACPI_SWFT_FILE_OFFSET (FileID), "File ID", 0}, + {ACPI_DMT_UINT16, ACPI_SWFT_FILE_OFFSET (FileVersion), "File Version", 0}, + {ACPI_DMT_UINT32, ACPI_SWFT_FILE_OFFSET (FileLength), "File Length", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileData[] = +{ + {ACPI_DMT_BUFFER, 0, "File Data", 0}, + ACPI_DMT_TERMINATOR +}; /******************************************************************************* * |
