summaryrefslogtreecommitdiff
path: root/src/soc/intel/xeon_sp
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/xeon_sp')
-rw-r--r--src/soc/intel/xeon_sp/nb_acpi.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/soc/intel/xeon_sp/nb_acpi.c b/src/soc/intel/xeon_sp/nb_acpi.c
index 4a4498080a..6d6eb00ea4 100644
--- a/src/soc/intel/xeon_sp/nb_acpi.c
+++ b/src/soc/intel/xeon_sp/nb_acpi.c
@@ -434,9 +434,15 @@ unsigned long northbridge_write_acpi_tables(const struct device *device,
if (config->vtd_support) {
current = ALIGN(current, 8);
dmar = (acpi_dmar_t *)current;
+ enum dmar_flags flags = DMAR_INTR_REMAP;
+
+ /* SKX FSP doesn't support X2APIC, but CPX FSP does */
+ if (CONFIG(SOC_INTEL_SKYLAKE_SP))
+ flags |= DMAR_X2APIC_OPT_OUT;
+
printk(BIOS_DEBUG, "ACPI: * DMAR\n");
- printk(BIOS_DEBUG, "[DMA Remapping table] Flags: 0x%x\n", DMAR_INTR_REMAP);
- acpi_create_dmar(dmar, DMAR_INTR_REMAP, acpi_fill_dmar);
+ printk(BIOS_DEBUG, "[DMA Remapping table] Flags: 0x%x\n", flags);
+ acpi_create_dmar(dmar, flags, acpi_fill_dmar);
current += dmar->header.length;
current = acpi_align_current(current);
acpi_add_table(rsdp, dmar);