Marc Jones has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/47579 )
Change subject: soc/intel/xeon_sp: Fix skx NVME drive boot issue ......................................................................
soc/intel/xeon_sp: Fix skx NVME drive boot issue
Skx FSP doesn't support x2apic setup, but cpx does. The skx DMAR table needs the X2API opt out flag set. This fixes an issue with the NVME driver loading on a kexec'd kernel. The change is easy to see in the coreboot output: [DMA Remapping table] Flags: 0x3 or in the DMAR ACPI table.
Change-Id: Iec977c893b70e30875d9a92f24af009c1e90389e Signed-off-by: Marc Jones marcjones@sysproconsulting.com --- M src/soc/intel/xeon_sp/nb_acpi.c 1 file changed, 6 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/79/47579/1
diff --git a/src/soc/intel/xeon_sp/nb_acpi.c b/src/soc/intel/xeon_sp/nb_acpi.c index 55c3d82..1b28f2d 100644 --- a/src/soc/intel/xeon_sp/nb_acpi.c +++ b/src/soc/intel/xeon_sp/nb_acpi.c @@ -443,9 +443,13 @@ if (config->vtd_support) { current = ALIGN(current, 8); dmar = (acpi_dmar_t *)current; + enum dmar_flags flags = DMAR_INTR_REMAP; +#if (CONFIG(SOC_INTEL_SKYLAKE_SP)) + flags |= DMAR_X2APIC_OPT_OUT; +#endif 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);