diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2023-06-26 22:58:59 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-06-28 13:57:31 +0000 |
commit | e33d253793f6fe553f0deaad5eb30c7095fe4203 (patch) | |
tree | 0aa9222a623a328a12fbfa77bb3659a6bcf6fc6c /src/soc/amd | |
parent | 90464073e4a1516fb7c956c8a32cbd77269ea0dd (diff) |
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>
Diffstat (limited to 'src/soc/amd')
-rw-r--r-- | src/soc/amd/common/block/acpi/ivrs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/soc/amd/common/block/acpi/ivrs.c b/src/soc/amd/common/block/acpi/ivrs.c index ca58c35d8e..ae39775482 100644 --- a/src/soc/amd/common/block/acpi/ivrs.c +++ b/src/soc/amd/common/block/acpi/ivrs.c @@ -181,7 +181,8 @@ static unsigned long acpi_ivhd_misc(unsigned long current, struct device *dev) 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, |