mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-06-12 22:31:45 +01:00
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 <asrinivasan@oss.tenstorrent.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20260508-payload_alignment-v1-1-6628b4ec1ed3@oss.tenstorrent.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
committed by
Anup Patel
parent
b6e7c84ae2
commit
895201cc5a
@@ -35,9 +35,9 @@ FW_JUMP_FDT_OFFSET=0x2200000
|
|||||||
FW_PAYLOAD=y
|
FW_PAYLOAD=y
|
||||||
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
||||||
# This needs to be 4MB aligned for 32-bit system
|
# This needs to be 4MB aligned for 32-bit system
|
||||||
FW_PAYLOAD_OFFSET=0x400000
|
FW_PAYLOAD_ALIGN=0x400000
|
||||||
else
|
else
|
||||||
# This needs to be 2MB aligned for 64-bit system
|
# This needs to be 2MB aligned for 64-bit system
|
||||||
FW_PAYLOAD_OFFSET=0x200000
|
FW_PAYLOAD_ALIGN=0x200000
|
||||||
endif
|
endif
|
||||||
FW_PAYLOAD_FDT_OFFSET=$(FW_JUMP_FDT_OFFSET)
|
FW_PAYLOAD_FDT_OFFSET=$(FW_JUMP_FDT_OFFSET)
|
||||||
|
|||||||
@@ -85,11 +85,11 @@ FW_PAYLOAD=<y|n>
|
|||||||
# This needs to be 4MB aligned for 32-bit support
|
# This needs to be 4MB aligned for 32-bit support
|
||||||
# This needs to be 2MB aligned for 64-bit support
|
# This needs to be 2MB aligned for 64-bit support
|
||||||
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
||||||
FW_PAYLOAD_OFFSET=0x400000
|
FW_PAYLOAD_ALIGN=0x400000
|
||||||
else
|
else
|
||||||
FW_PAYLOAD_OFFSET=0x200000
|
FW_PAYLOAD_ALIGN=0x200000
|
||||||
endif
|
endif
|
||||||
# FW_PAYLOAD_ALIGN=0x1000
|
# FW_PAYLOAD_OFFSET=0x400000
|
||||||
# FW_PAYLOAD_PATH="path to next boot stage binary image file"
|
# FW_PAYLOAD_PATH="path to next boot stage binary image file"
|
||||||
# FW_PAYLOAD_FDT_OFFSET=0x2200000
|
# FW_PAYLOAD_FDT_OFFSET=0x2200000
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user