summaryrefslogtreecommitdiffstats
path: root/src/soc
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2022-11-10 18:19:36 +0100
committerFelix Held <felix-coreboot@felixheld.de>2022-11-11 17:45:18 +0000
commitdafc6194a03ea6c3b4667e5bf364040a4b210b34 (patch)
tree6cf29b563054bc88a8c1b4dc2f6372d13ac81888 /src/soc
parent88cf831ed1e592e75a54e56ca1cd524155293b30 (diff)
downloadcoreboot-dafc6194a03ea6c3b4667e5bf364040a4b210b34.tar.gz
coreboot-dafc6194a03ea6c3b4667e5bf364040a4b210b34.tar.bz2
coreboot-dafc6194a03ea6c3b4667e5bf364040a4b210b34.zip
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>
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/amd/cezanne/root_complex.c12
-rw-r--r--src/soc/amd/glinda/root_complex.c12
-rw-r--r--src/soc/amd/mendocino/root_complex.c12
-rw-r--r--src/soc/amd/morgana/root_complex.c12
-rw-r--r--src/soc/amd/picasso/root_complex.c12
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 ed919b18f8a4..5f2024cd8acf 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 2a4a547ae0ce..16f1bddb7e9d 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 7feb7f750016..d72851682af3 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 1a4f0bd01f4d..0e6e7300087c 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 d53643ec765a..489202366b94 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)