diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2022-11-10 18:19:36 +0100 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-11-11 17:45:18 +0000 |
commit | dafc6194a03ea6c3b4667e5bf364040a4b210b34 (patch) | |
tree | 6cf29b563054bc88a8c1b4dc2f6372d13ac81888 | |
parent | 88cf831ed1e592e75a54e56ca1cd524155293b30 (diff) |
soc/amd/root_complex: don't skip reporting IOAPIC resource in !hob case
When no HOB list is found, not only adding the resources reported by the
FSP were skipped, but also adding the GNB IOAPIC resource was skipped.
Fix this bug by moving the reporting of the GNB IOAPIC resource before
the resources reported in the FSP HOBs to not skip the IOAPIC resource
when there's no HOB list.
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I9174c8d7e5e94144187d27210e12f2dca3a6010f
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69460
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | src/soc/amd/cezanne/root_complex.c | 12 | ||||
-rw-r--r-- | src/soc/amd/glinda/root_complex.c | 12 | ||||
-rw-r--r-- | src/soc/amd/mendocino/root_complex.c | 12 | ||||
-rw-r--r-- | src/soc/amd/morgana/root_complex.c | 12 | ||||
-rw-r--r-- | src/soc/amd/picasso/root_complex.c | 12 |
5 files changed, 30 insertions, 30 deletions
diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c index ed919b18f8..5f2024cd8a 100644 --- a/src/soc/amd/cezanne/root_complex.c +++ b/src/soc/amd/cezanne/root_complex.c @@ -142,6 +142,12 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); + /* GNB IOAPIC resource */ + gnb_apic = new_resource(dev, idx++); + gnb_apic->base = GNB_IO_APIC_ADDR; + gnb_apic->size = 0x00001000; + gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + if (!hob) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); @@ -168,12 +174,6 @@ static void read_resources(struct device *dev) printk(BIOS_ERR, "failed to set resources for type %d\n", res->type); } - - /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); - gnb_apic->base = GNB_IO_APIC_ADDR; - gnb_apic->size = 0x00001000; - gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; } static void root_complex_init(struct device *dev) diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c index 2a4a547ae0..16f1bddb7e 100644 --- a/src/soc/amd/glinda/root_complex.c +++ b/src/soc/amd/glinda/root_complex.c @@ -157,6 +157,12 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); + /* GNB IOAPIC resource */ + gnb_apic = new_resource(dev, idx++); + gnb_apic->base = GNB_IO_APIC_ADDR; + gnb_apic->size = 0x00001000; + gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + if (!hob) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); @@ -183,12 +189,6 @@ static void read_resources(struct device *dev) printk(BIOS_ERR, "Failed to set resources for type %d\n", res->type); } - - /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); - gnb_apic->base = GNB_IO_APIC_ADDR; - gnb_apic->size = 0x00001000; - gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; } static void root_complex_init(struct device *dev) diff --git a/src/soc/amd/mendocino/root_complex.c b/src/soc/amd/mendocino/root_complex.c index 7feb7f7500..d72851682a 100644 --- a/src/soc/amd/mendocino/root_complex.c +++ b/src/soc/amd/mendocino/root_complex.c @@ -157,6 +157,12 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); + /* GNB IOAPIC resource */ + gnb_apic = new_resource(dev, idx++); + gnb_apic->base = GNB_IO_APIC_ADDR; + gnb_apic->size = 0x00001000; + gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + if (!hob) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); @@ -183,12 +189,6 @@ static void read_resources(struct device *dev) printk(BIOS_ERR, "Failed to set resources for type %d\n", res->type); } - - /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); - gnb_apic->base = GNB_IO_APIC_ADDR; - gnb_apic->size = 0x00001000; - gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; } static void root_complex_init(struct device *dev) diff --git a/src/soc/amd/morgana/root_complex.c b/src/soc/amd/morgana/root_complex.c index 1a4f0bd01f..0e6e730008 100644 --- a/src/soc/amd/morgana/root_complex.c +++ b/src/soc/amd/morgana/root_complex.c @@ -157,6 +157,12 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); + /* GNB IOAPIC resource */ + gnb_apic = new_resource(dev, idx++); + gnb_apic->base = GNB_IO_APIC_ADDR; + gnb_apic->size = 0x00001000; + gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + if (!hob) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); @@ -183,12 +189,6 @@ static void read_resources(struct device *dev) printk(BIOS_ERR, "Failed to set resources for type %d\n", res->type); } - - /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); - gnb_apic->base = GNB_IO_APIC_ADDR; - gnb_apic->size = 0x00001000; - gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; } static void root_complex_init(struct device *dev) diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c index d53643ec76..489202366b 100644 --- a/src/soc/amd/picasso/root_complex.c +++ b/src/soc/amd/picasso/root_complex.c @@ -140,6 +140,12 @@ static void read_resources(struct device *dev) mmconf_resource(dev, idx++); + /* GNB IOAPIC resource */ + gnb_apic = new_resource(dev, idx++); + gnb_apic->base = GNB_IO_APIC_ADDR; + gnb_apic->size = 0x00001000; + gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + if (!hob) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); @@ -166,12 +172,6 @@ static void read_resources(struct device *dev) printk(BIOS_ERR, "failed to set resources for type %d\n", res->type); } - - /* GNB IOAPIC resource */ - gnb_apic = new_resource(dev, idx++); - gnb_apic->base = GNB_IO_APIC_ADDR; - gnb_apic->size = 0x00001000; - gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; } static void root_complex_init(struct device *dev) |