diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c
index 2e3c5c7..ecb1991 100644
--- a/src/soc/amd/cezanne/root_complex.c
+++ b/src/soc/amd/cezanne/root_complex.c
@@ -14,7 +14,6 @@
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
-#include <fsp/util.h>
 #include <soc/iomap.h>
 #include <stdint.h>
 #include "chip.h"
@@ -106,8 +105,6 @@
 {
 	uint32_t mem_usable = (uintptr_t)cbmem_top();
 	unsigned int idx = 0;
-	const struct hob_header *hob_iterator;
-	const struct hob_resource *res;
 
 	uintptr_t early_reserved_dram_start, early_reserved_dram_end;
 	const struct memmap_early_dram *e = memmap_get_early_dram_usage();
@@ -146,26 +143,7 @@
 	/* Reserve fixed IOMMU MMIO region */
 	mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE);
 
-	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
-		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
-				__func__);
-		return;
-	}
-
-	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
-			continue; /* 0 through low usable was set above */
-		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
-			continue; /* Done separately */
-
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
-			ram_range(dev, idx++, res->addr, res->length);
-		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
-			reserved_ram_range(dev, idx++, res->addr, res->length);
-		else
-			printk(BIOS_ERR, "failed to set resources for type %d\n",
-					res->type);
-	}
+	read_fsp_resources(dev, &idx);
 }
 
 static void root_complex_init(struct device *dev)
diff --git a/src/soc/amd/common/block/include/amdblocks/root_complex.h b/src/soc/amd/common/block/include/amdblocks/root_complex.h
index 6149897..fd75ddf 100644
--- a/src/soc/amd/common/block/include/amdblocks/root_complex.h
+++ b/src/soc/amd/common/block/include/amdblocks/root_complex.h
@@ -22,4 +22,6 @@
 uint32_t get_iohc_misc_smn_base(struct device *domain);
 const struct non_pci_mmio_reg *get_iohc_non_pci_mmio_regs(size_t *count);
 
+void read_fsp_resources(struct device *dev, unsigned int *idx);
+
 #endif /* AMD_BLOCK_ROOT_COMPLEX_H */
diff --git a/src/soc/amd/common/fsp/Makefile.inc b/src/soc/amd/common/fsp/Makefile.inc
index ab9a7ab..cb4b675 100644
--- a/src/soc/amd/common/fsp/Makefile.inc
+++ b/src/soc/amd/common/fsp/Makefile.inc
@@ -2,6 +2,7 @@
 ifeq ($(CONFIG_PLATFORM_USES_FSP2_0),y)
 romstage-y += fsp_reset.c
 romstage-y += fsp_validate.c
+ramstage-y += fsp_report_resources.c
 ramstage-y += fsp_reset.c
 ramstage-$(CONFIG_HAVE_ACPI_TABLES) += fsp-acpi.c
 ramstage-$(CONFIG_SOC_AMD_COMMON_FSP_CCX_CPPC_HOB) += fsp_ccx_cppc_hob.c
diff --git a/src/soc/amd/common/fsp/fsp_report_resources.c b/src/soc/amd/common/fsp/fsp_report_resources.c
new file mode 100644
index 0000000..bcc0715
--- /dev/null
+++ b/src/soc/amd/common/fsp/fsp_report_resources.c
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <amdblocks/root_complex.h>
+#include <cbmem.h>
+#include <console/console.h>
+#include <device/device.h>
+#include <fsp/util.h>
+#include <types.h>
+
+void read_fsp_resources(struct device *dev, unsigned int *idx)
+{
+	const uint32_t mem_usable = (uintptr_t)cbmem_top();
+	const struct hob_header *hob_iterator;
+	const struct hob_resource *res;
+
+	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
+		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__);
+		return;
+	}
+
+	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
+		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
+			/* 0 through low usable is already reported by the root complex code */
+			continue;
+		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
+			continue; /* Done separately */
+
+		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
+			ram_range(dev, (*idx)++, res->addr, res->length);
+		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
+			reserved_ram_range(dev, (*idx)++, res->addr, res->length);
+		else
+			printk(BIOS_ERR, "failed to set resources for type %d\n", res->type);
+	}
+}
diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c
index cf9d7e4..4474a3f 100644
--- a/src/soc/amd/glinda/root_complex.c
+++ b/src/soc/amd/glinda/root_complex.c
@@ -16,7 +16,6 @@
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
-#include <fsp/util.h>
 #include <soc/iomap.h>
 #include <stdint.h>
 #include "chip.h"
@@ -121,8 +120,6 @@
 {
 	uint32_t mem_usable = (uintptr_t)cbmem_top();
 	unsigned int idx = 0;
-	const struct hob_header *hob_iterator;
-	const struct hob_resource *res;
 
 	uintptr_t early_reserved_dram_start, early_reserved_dram_end;
 	const struct memmap_early_dram *e = memmap_get_early_dram_usage();
@@ -161,26 +158,7 @@
 	/* Reserve fixed IOMMU MMIO region */
 	mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE);
 
-	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
-		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
-				__func__);
-		return;
-	}
-
-	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
-			continue; /* 0 through low usable was set above */
-		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
-			continue; /* Done separately */
-
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
-			ram_range(dev, idx++, res->addr, res->length);
-		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
-			reserved_ram_range(dev, idx++, res->addr, res->length);
-		else
-			printk(BIOS_ERR, "Failed to set resources for type %d\n",
-					res->type);
-	}
+	read_fsp_resources(dev, &idx);
 }
 
 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 834052f..0c95f7a 100644
--- a/src/soc/amd/mendocino/root_complex.c
+++ b/src/soc/amd/mendocino/root_complex.c
@@ -17,7 +17,6 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <fsp/amd_misc_data.h>
-#include <fsp/util.h>
 #include <soc/iomap.h>
 #include <stdint.h>
 #include "chip.h"
@@ -149,8 +148,6 @@
 {
 	uint32_t mem_usable = (uintptr_t)cbmem_top();
 	unsigned int idx = 0;
-	const struct hob_header *hob_iterator;
-	const struct hob_resource *res;
 
 	uintptr_t early_reserved_dram_start, early_reserved_dram_end;
 	const struct memmap_early_dram *e = memmap_get_early_dram_usage();
@@ -189,26 +186,7 @@
 	/* Reserve fixed IOMMU MMIO region */
 	mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE);
 
-	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
-		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
-				__func__);
-		return;
-	}
-
-	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
-			continue; /* 0 through low usable was set above */
-		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
-			continue; /* Done separately */
-
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
-			ram_range(dev, idx++, res->addr, res->length);
-		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
-			reserved_ram_range(dev, idx++, res->addr, res->length);
-		else
-			printk(BIOS_ERR, "Failed to set resources for type %d\n",
-					res->type);
-	}
+	read_fsp_resources(dev, &idx);
 }
 
 static void root_complex_init(struct device *dev)
diff --git a/src/soc/amd/phoenix/root_complex.c b/src/soc/amd/phoenix/root_complex.c
index a1f256f..b1a3129 100644
--- a/src/soc/amd/phoenix/root_complex.c
+++ b/src/soc/amd/phoenix/root_complex.c
@@ -16,7 +16,6 @@
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
-#include <fsp/util.h>
 #include <soc/iomap.h>
 #include <stdint.h>
 #include "chip.h"
@@ -121,8 +120,6 @@
 {
 	uint32_t mem_usable = (uintptr_t)cbmem_top();
 	unsigned int idx = 0;
-	const struct hob_header *hob_iterator;
-	const struct hob_resource *res;
 
 	uintptr_t early_reserved_dram_start, early_reserved_dram_end;
 	const struct memmap_early_dram *e = memmap_get_early_dram_usage();
@@ -161,26 +158,7 @@
 	/* Reserve fixed IOMMU MMIO region */
 	mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE);
 
-	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
-		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
-				__func__);
-		return;
-	}
-
-	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
-			continue; /* 0 through low usable was set above */
-		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
-			continue; /* Done separately */
-
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
-			ram_range(dev, idx++, res->addr, res->length);
-		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
-			reserved_ram_range(dev, idx++, res->addr, res->length);
-		else
-			printk(BIOS_ERR, "Failed to set resources for type %d\n",
-					res->type);
-	}
+	read_fsp_resources(dev, &idx);
 }
 
 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 7ae1df0..b74a132 100644
--- a/src/soc/amd/picasso/root_complex.c
+++ b/src/soc/amd/picasso/root_complex.c
@@ -15,7 +15,6 @@
 #include <console/console.h>
 #include <device/device.h>
 #include <device/pci.h>
-#include <fsp/util.h>
 #include <stdint.h>
 #include <soc/iomap.h>
 #include "chip.h"
@@ -106,8 +105,6 @@
 {
 	uint32_t mem_usable = (uintptr_t)cbmem_top();
 	unsigned int idx = 0;
-	const struct hob_header *hob_iterator;
-	const struct hob_resource *res;
 
 	uintptr_t early_reserved_dram_start, early_reserved_dram_end;
 	const struct memmap_early_dram *e = memmap_get_early_dram_usage();
@@ -144,25 +141,7 @@
 	/* Reserve fixed IOMMU MMIO region */
 	mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE);
 
-	if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
-		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__);
-		return;
-	}
-
-	while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
-			continue; /* 0 through low usable was set above */
-		if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)
-			continue; /* Done separately */
-
-		if (res->type == EFI_RESOURCE_SYSTEM_MEMORY)
-			ram_range(dev, idx++, res->addr, res->length);
-		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
-			reserved_ram_range(dev, idx++, res->addr, res->length);
-		else
-			printk(BIOS_ERR, "failed to set resources for type %d\n",
-					res->type);
-	}
+	read_fsp_resources(dev, &idx);
 }
 
 static void root_complex_init(struct device *dev)
