soc/intel/xeon_sp/cpx: skip DRHD generation for non-PCIe stack

Without skipping of DRHD generation for non-PCIe stack, the OS
kernel detects incorrect DMAR table with following messages:
[    0.561817] Your BIOS is broken; DMAR reported at address 0

Signed-off-by: Jonathan Zhang <jonzhang@fb.com>
Change-Id: I098605daf12a264f390613581427ec722afcddaf
Reviewed-on: https://review.coreboot.org/c/coreboot/+/45887
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Jonathan Zhang 2020-10-08 10:35:05 -07:00 committed by Philipp Deppenwiese
parent 26d1652715
commit 1c3fef2ca9
1 changed files with 4 additions and 0 deletions

View File

@ -457,6 +457,10 @@ static unsigned long acpi_create_drhd(unsigned long current, int socket,
printk(BIOS_SPEW, "%s socket: %d, stack: %d, bus: 0x%x, pcie_seg: 0x%x, reg_base: 0x%x\n", printk(BIOS_SPEW, "%s socket: %d, stack: %d, bus: 0x%x, pcie_seg: 0x%x, reg_base: 0x%x\n",
__func__, socket, stack, bus, pcie_seg, reg_base); __func__, socket, stack, bus, pcie_seg, reg_base);
/* Do not generate DRHD for non-PCIe stack */
if (!reg_base)
return current;
// Add DRHD Hardware Unit // Add DRHD Hardware Unit
if (socket == 0 && stack == CSTACK) { if (socket == 0 && stack == CSTACK) {
printk(BIOS_DEBUG, "[Hardware Unit Definition] Flags: 0x%x, PCI Segment Number: 0x%x, " printk(BIOS_DEBUG, "[Hardware Unit Definition] Flags: 0x%x, PCI Segment Number: 0x%x, "