Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/76117?usp=email )
Change subject: soc/amd/common/block/acpi/ivrs: fix missing IOAPIC[1] error ......................................................................
soc/amd/common/block/acpi/ivrs: fix missing IOAPIC[1] error
When probing the resource with the IOMMU_IOAPIC_IDX index, we need to use the PCI device 0 function 0 on the first bus in the domain for probing and not the domain device, since the resource isn't on the domain device, but on the northbridge device which is B0F0D0 in the case of the APUs.
TEST=This fixes the following error on Mandolin with Picasso:
AMD-Vi: [Firmware Bug]: : IOAPIC[1] not in IVRS table AMD-Vi: Disabling interrupt remapping
Signed-off-by: Felix Held felix-coreboot@felixheld.de Change-Id: Id88f17d68ba5accef6561837478828bd3d24baa5 Reviewed-on: https://review.coreboot.org/c/coreboot/+/76117 Reviewed-by: Arthur Heymans arthur@aheymans.xyz Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Fred Reitberger reitbergerfred@gmail.com --- M src/soc/amd/common/block/acpi/ivrs.c 1 file changed, 2 insertions(+), 1 deletion(-)
Approvals: Fred Reitberger: Looks good to me, but someone else must approve Arthur Heymans: Looks good to me, approved build bot (Jenkins): Verified
diff --git a/src/soc/amd/common/block/acpi/ivrs.c b/src/soc/amd/common/block/acpi/ivrs.c index ca58c35..ae39775 100644 --- a/src/soc/amd/common/block/acpi/ivrs.c +++ b/src/soc/amd/common/block/acpi/ivrs.c @@ -181,7 +181,8 @@ add_ivhd_device_entries(NULL, dev, 0, -1, &root_level, ¤t, dev->link_list->secondary);
- res = probe_resource(dev, IOMMU_IOAPIC_IDX); + res = probe_resource(pcidev_path_behind(dev->link_list, PCI_DEVFN(0, 0)), + IOMMU_IOAPIC_IDX); if (res) { /* Describe IOAPIC associated with the IOMMU */ current = acpi_fill_ivrs_ioapic(current, (u8 *)(uintptr_t)res->base,