From ce179729f0195795f099fc38934e0605c41df262 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Wed, 7 Jun 2023 15:27:18 +0200 Subject: [PATCH] soc/amd/acpi/ivrs: Use specific IOMMU resource index on all SOC By adding all DXIO IOAPIC with the same resource index, the IVRS code can always pick that resource which simplifies the code. Signed-off-by: Arthur Heymans Change-Id: I10345e2337dcb709c2c1a8e57a1b7dd9c04adb9e Reviewed-on: https://review.coreboot.org/c/coreboot/+/75710 Tested-by: build bot (Jenkins) Reviewed-by: Martin L Roth Reviewed-by: Naresh --- src/soc/amd/cezanne/root_complex.c | 3 ++- src/soc/amd/common/block/acpi/ivrs.c | 3 --- src/soc/amd/glinda/root_complex.c | 3 ++- src/soc/amd/mendocino/root_complex.c | 3 ++- src/soc/amd/phoenix/root_complex.c | 3 ++- src/soc/amd/picasso/root_complex.c | 3 ++- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c index bbddfab177..29070f6d4e 100644 --- a/src/soc/amd/cezanne/root_complex.c +++ b/src/soc/amd/cezanne/root_complex.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -145,7 +146,7 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); + gnb_apic = new_resource(dev, IOMMU_IOAPIC_IDX); gnb_apic->base = GNB_IO_APIC_ADDR; gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; diff --git a/src/soc/amd/common/block/acpi/ivrs.c b/src/soc/amd/common/block/acpi/ivrs.c index 3e58a61630..1629ff914f 100644 --- a/src/soc/amd/common/block/acpi/ivrs.c +++ b/src/soc/amd/common/block/acpi/ivrs.c @@ -206,9 +206,6 @@ static unsigned long acpi_ivhd_misc(unsigned long current, struct device *dev) /* Describe IOAPIC associated with the IOMMU */ current = _acpi_fill_ivrs_ioapic(current, (u8 *)(uintptr_t)res->base, PCI_DEVFN(0, 1) | (dev->link_list->secondary << 8), 0); - } else if (dev->link_list->secondary == 0) { - current = _acpi_fill_ivrs_ioapic(current, (u8 *)GNB_IO_APIC_ADDR, - PCI_DEVFN(0, 1), 0); } /* If the domain has secondary bus as zero then associate HPET & FCH IOAPIC */ diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c index 64d90ee77e..b18e948abe 100644 --- a/src/soc/amd/glinda/root_complex.c +++ b/src/soc/amd/glinda/root_complex.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -160,7 +161,7 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); + gnb_apic = new_resource(dev, IOMMU_IOAPIC_IDX); gnb_apic->base = GNB_IO_APIC_ADDR; gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; diff --git a/src/soc/amd/mendocino/root_complex.c b/src/soc/amd/mendocino/root_complex.c index 6f935020a3..7a58f015e6 100644 --- a/src/soc/amd/mendocino/root_complex.c +++ b/src/soc/amd/mendocino/root_complex.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -188,7 +189,7 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); + gnb_apic = new_resource(dev, IOMMU_IOAPIC_IDX); gnb_apic->base = GNB_IO_APIC_ADDR; gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; diff --git a/src/soc/amd/phoenix/root_complex.c b/src/soc/amd/phoenix/root_complex.c index 64f9ca4576..3110ea3ee5 100644 --- a/src/soc/amd/phoenix/root_complex.c +++ b/src/soc/amd/phoenix/root_complex.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -160,7 +161,7 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); + gnb_apic = new_resource(dev, IOMMU_IOAPIC_IDX); gnb_apic->base = GNB_IO_APIC_ADDR; gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c index e61208ff22..cd10fdb762 100644 --- a/src/soc/amd/picasso/root_complex.c +++ b/src/soc/amd/picasso/root_complex.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -143,7 +144,7 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); + gnb_apic = new_resource(dev, IOMMU_IOAPIC_IDX); gnb_apic->base = GNB_IO_APIC_ADDR; gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;