From 895201cc5a4dfca2df523287bef872197eb95d16 Mon Sep 17 00:00:00 2001 From: Anirudh Srinivasan Date: Fri, 8 May 2026 11:32:30 -0500 Subject: [PATCH] platform: Fix payload alignment when FW_TEXT_START isn't 2M/4M aligned The payload for FW_PAYLOAD needs to be placed at a 2M/4M aligned address (for 64/32 bit systems) and the current makefile uses FW_PAYLOAD_OFFSET to achieve this. This only works if FW_TEXT_START is already 2M/4M aligned. Most existing physical/virtual platforms have used a FW_TEXT_START of 0x0 or 0x80000000, so this hasn't been an issue so far. If, for example, FW_TEXT_START is 0x80000, the payload would end up placed at 0x280000 on a 64 bit system, which isn't a 2M aligned address. Update the makefile to use FW_PAYLOAD_ALIGN instead. This will ensure that the address picked for the payload is 2M/4M aligned irrespective of where FW_TEXT_START is. Signed-off-by: Anirudh Srinivasan Reviewed-by: Anup Patel Link: https://lore.kernel.org/r/20260508-payload_alignment-v1-1-6628b4ec1ed3@oss.tenstorrent.com Signed-off-by: Anup Patel --- platform/generic/objects.mk | 4 ++-- platform/template/objects.mk | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/generic/objects.mk b/platform/generic/objects.mk index c4a8fee2..ca7fb8b7 100644 --- a/platform/generic/objects.mk +++ b/platform/generic/objects.mk @@ -35,9 +35,9 @@ FW_JUMP_FDT_OFFSET=0x2200000 FW_PAYLOAD=y ifeq ($(PLATFORM_RISCV_XLEN), 32) # This needs to be 4MB aligned for 32-bit system - FW_PAYLOAD_OFFSET=0x400000 + FW_PAYLOAD_ALIGN=0x400000 else # This needs to be 2MB aligned for 64-bit system - FW_PAYLOAD_OFFSET=0x200000 + FW_PAYLOAD_ALIGN=0x200000 endif FW_PAYLOAD_FDT_OFFSET=$(FW_JUMP_FDT_OFFSET) diff --git a/platform/template/objects.mk b/platform/template/objects.mk index f240a557..9b4bc928 100644 --- a/platform/template/objects.mk +++ b/platform/template/objects.mk @@ -85,11 +85,11 @@ FW_PAYLOAD= # This needs to be 4MB aligned for 32-bit support # This needs to be 2MB aligned for 64-bit support ifeq ($(PLATFORM_RISCV_XLEN), 32) -FW_PAYLOAD_OFFSET=0x400000 +FW_PAYLOAD_ALIGN=0x400000 else -FW_PAYLOAD_OFFSET=0x200000 +FW_PAYLOAD_ALIGN=0x200000 endif -# FW_PAYLOAD_ALIGN=0x1000 +# FW_PAYLOAD_OFFSET=0x400000 # FW_PAYLOAD_PATH="path to next boot stage binary image file" # FW_PAYLOAD_FDT_OFFSET=0x2200000 #