From 02342b31dfd3aa9d81b7f71fc1dec990019f5b41 Mon Sep 17 00:00:00 2001 From: Maximilian Brune Date: Mon, 10 Nov 2025 16:46:23 +0100 Subject: [PATCH] soc/amd/*/memmap.c: Report FCH MMIO regions as reserved The following error is observed in Linux: [ 30.255680] ACPI Error: Aborting method \_SB.FUR4.AOAC._OFF due to previous error (AE_AML_LOOP_TIMEOUT) It caused a boot delay issue in the virtualization case above due to some mmio regions not being passed through and the acpi interpreter waiting. reserve MMIO regions which are used by ACPI code in order to fix this issue. source: "Address Space Mapping" Table in relevant PPRs. Signed-off-by: Maximilian Brune Change-Id: Ia12a3dea0e24ae24fa1f7db7c7f2bd9f7dd6a591 Reviewed-on: https://review.coreboot.org/c/coreboot/+/90212 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/soc/amd/cezanne/memmap.c | 5 +++++ src/soc/amd/glinda/memmap.c | 5 +++++ src/soc/amd/mendocino/memmap.c | 5 +++++ src/soc/amd/phoenix/memmap.c | 5 +++++ src/soc/amd/picasso/memmap.c | 5 +++++ 5 files changed, 25 insertions(+) diff --git a/src/soc/amd/cezanne/memmap.c b/src/soc/amd/cezanne/memmap.c index feecdd7b13..a3f1c864a2 100644 --- a/src/soc/amd/cezanne/memmap.c +++ b/src/soc/amd/cezanne/memmap.c @@ -1,9 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include +#include #include /* @@ -65,5 +67,8 @@ void read_soc_memmap_resources(struct device *dev, unsigned long *idx) /* Reserve fixed IOMMU MMIO region */ mmio_range(dev, (*idx)++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + mmio_range(dev, (*idx)++, AMD_SB_ACPI_MMIO_ADDR, 0x2000); + mmio_range(dev, (*idx)++, ALINK_AHB_ADDRESS, 0x20000); + read_fsp_resources(dev, idx); } diff --git a/src/soc/amd/glinda/memmap.c b/src/soc/amd/glinda/memmap.c index feecdd7b13..a3f1c864a2 100644 --- a/src/soc/amd/glinda/memmap.c +++ b/src/soc/amd/glinda/memmap.c @@ -1,9 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include +#include #include /* @@ -65,5 +67,8 @@ void read_soc_memmap_resources(struct device *dev, unsigned long *idx) /* Reserve fixed IOMMU MMIO region */ mmio_range(dev, (*idx)++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + mmio_range(dev, (*idx)++, AMD_SB_ACPI_MMIO_ADDR, 0x2000); + mmio_range(dev, (*idx)++, ALINK_AHB_ADDRESS, 0x20000); + read_fsp_resources(dev, idx); } diff --git a/src/soc/amd/mendocino/memmap.c b/src/soc/amd/mendocino/memmap.c index feecdd7b13..a3f1c864a2 100644 --- a/src/soc/amd/mendocino/memmap.c +++ b/src/soc/amd/mendocino/memmap.c @@ -1,9 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include +#include #include /* @@ -65,5 +67,8 @@ void read_soc_memmap_resources(struct device *dev, unsigned long *idx) /* Reserve fixed IOMMU MMIO region */ mmio_range(dev, (*idx)++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + mmio_range(dev, (*idx)++, AMD_SB_ACPI_MMIO_ADDR, 0x2000); + mmio_range(dev, (*idx)++, ALINK_AHB_ADDRESS, 0x20000); + read_fsp_resources(dev, idx); } diff --git a/src/soc/amd/phoenix/memmap.c b/src/soc/amd/phoenix/memmap.c index 1b45b9c93c..063c100bc9 100644 --- a/src/soc/amd/phoenix/memmap.c +++ b/src/soc/amd/phoenix/memmap.c @@ -1,10 +1,12 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include #include +#include #include /* @@ -66,6 +68,9 @@ void read_soc_memmap_resources(struct device *dev, unsigned long *idx) /* Reserve fixed IOMMU MMIO region */ mmio_range(dev, (*idx)++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + mmio_range(dev, (*idx)++, AMD_SB_ACPI_MMIO_ADDR, 0x2000); + mmio_range(dev, (*idx)++, ALINK_AHB_ADDRESS, 0x20000); + if (CONFIG(PLATFORM_USES_FSP2_0)) read_fsp_resources(dev, idx); else diff --git a/src/soc/amd/picasso/memmap.c b/src/soc/amd/picasso/memmap.c index 2bbf28589a..bdbfb426e5 100644 --- a/src/soc/amd/picasso/memmap.c +++ b/src/soc/amd/picasso/memmap.c @@ -1,9 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include +#include #include /* @@ -65,5 +67,8 @@ void read_soc_memmap_resources(struct device *dev, unsigned long *idx) /* Reserve fixed IOMMU MMIO region */ mmio_range(dev, (*idx)++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + mmio_range(dev, (*idx)++, AMD_SB_ACPI_MMIO_ADDR, 0x2000); + mmio_range(dev, (*idx)++, ALINK_AHB_ADDRESS, 0x20000); + read_fsp_resources(dev, idx); }