summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYidi Lin <yidilin@chromium.org>2023-12-08 23:52:05 +0800
committerFelix Held <felix-coreboot@felixheld.de>2023-12-11 11:00:22 +0000
commite78ea98bb28b276a20ec50251e6a1dde01295c35 (patch)
tree76419ba37dd82303d6c28f5abb81db1dd20b9292
parent933e50702ea04e0d479934d1c2e7fc7c055e4a0c (diff)
libpayload/arm64: Round fb_size up to a multiple of GRANULE_SIZE
If a framebuffer is already configured by coreboot, we need to ensure that the framebuffer size is a multiple of GRANULE_SIZE before passing to `mmu_add_memrange`. Otherwise, we would fail to allocate memory region due to `sanity_check`. Change-Id: Ia6a6400733ca10a61220087e87022f68c28e4789 Signed-off-by: Yidi Lin <yidilin@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79451 Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--payloads/libpayload/arch/arm64/mmu.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/payloads/libpayload/arch/arm64/mmu.c b/payloads/libpayload/arch/arm64/mmu.c
index bb7954473c..5865b1b9ef 100644
--- a/payloads/libpayload/arch/arm64/mmu.c
+++ b/payloads/libpayload/arch/arm64/mmu.c
@@ -575,8 +575,6 @@ static struct mmu_memrange *_mmu_add_fb_range(
prop.type = TYPE_DMA_MEM;
- /* make sure to allocate a size of multiple of GRANULE_SIZE */
- size = ALIGN_UP(size, GRANULE_SIZE);
prop.size = size;
prop.lim_excl = MIN_64_BIT_ADDR;
prop.align = MB_SIZE;
@@ -634,6 +632,9 @@ static void mmu_add_fb_range(struct mmu_ranges *mmu_ranges)
if (!fb_size)
return;
+ /* make sure to allocate a size of multiple of GRANULE_SIZE */
+ fb_size = ALIGN_UP(fb_size, GRANULE_SIZE);
+
/* framebuffer address has been set already, so just add it as DMA */
if (framebuffer->physical_address) {
if (mmu_add_memrange(mmu_ranges,