summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2023-12-12 16:55:52 +0100
committerFelix Held <felix-coreboot@felixheld.de>2023-12-13 20:29:17 +0000
commitdd032e0c41dc24e24f51f2753e61b50101601e8d (patch)
tree3921573f55d60fc4257360267c2cbc659ae80d36
parent0fe8643465ac63674ed731b60576bc945890bd05 (diff)
soc/amd/genoa: set up the non-FCH IOAPICs
Apart from the IOAPIC in the FCH which is handled by amd_lpc_ops, there's one IOAPIC per PCI root which also needs to be initialized. Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Change-Id: I38af5a194062e714827852e95f4e29b45311e517 Reviewed-on: https://review.coreboot.org/c/coreboot/+/76531 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Varshit Pandya <pandyavarshit@gmail.com> Reviewed-by: Martin L Roth <gaumless@gmail.com>
-rw-r--r--src/soc/amd/genoa/domain.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/soc/amd/genoa/domain.c b/src/soc/amd/genoa/domain.c
index 99d7edc76b..1a6115fcf2 100644
--- a/src/soc/amd/genoa/domain.c
+++ b/src/soc/amd/genoa/domain.c
@@ -48,8 +48,18 @@ static void genoa_domain_set_resources(struct device *domain)
}
}
+static void genoa_domain_init(struct device *domain)
+{
+ struct resource *res = probe_resource(domain, IOMMU_IOAPIC_IDX);
+ if (!res)
+ return;
+
+ register_new_ioapic((void *)(uintptr_t)res->base);
+}
+
struct device_operations genoa_pci_domain_ops = {
.read_resources = genoa_domain_read_resources,
.set_resources = genoa_domain_set_resources,
.scan_bus = amd_pci_domain_scan_bus,
+ .init = genoa_domain_init,
};