summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnirudh Srinivasan <[email protected]>2026-05-08 11:32:30 -0500
committerAnup Patel <[email protected]>2026-06-12 08:55:39 +0530
commit895201cc5a4dfca2df523287bef872197eb95d16 (patch)
treeccbabe8c5df7ffa2c9dc17348d12993978532837
parentb6e7c84ae2635f4cd3f951c8d6ea0ddd2aac425a (diff)
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 <[email protected]> Reviewed-by: Anup Patel <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Anup Patel <[email protected]>
-rw-r--r--platform/generic/objects.mk4
-rw-r--r--platform/template/objects.mk6
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=<y|n>
# 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
#