diff options
author | Yidi Lin <yidilin@chromium.org> | 2023-12-08 23:52:05 +0800 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-12-11 11:00:22 +0000 |
commit | e78ea98bb28b276a20ec50251e6a1dde01295c35 (patch) | |
tree | 76419ba37dd82303d6c28f5abb81db1dd20b9292 | |
parent | 933e50702ea04e0d479934d1c2e7fc7c055e4a0c (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.c | 5 |
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, |