mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-11 15:14:21 +00:00
fix(arm): reinit secure and non-secure tls
Initializing the transfer list using `transfer_list_ensure` allows reuse of an already initialized transfer list. While this is beneficial when receiving a transfer list and ensuring one exists, it causes issues during a system RESET if the old content of SRAM is not cleared. To prevent this, at least one step in the reset path must zero intialise the transfer list memory. Unless a previous stage explicitly provides a transfer list via boot arguments, a fresh transfer list should be created. This change ensures that BL1 and BL31 properly reinitialize the transfer lists, preserving correctness for secure and non-secure handoffs in TF-A. Change-Id: I3bfaa9e76df932a637031d645e4a22d857a094a5 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
This commit is contained in:
parent
e13d027b70
commit
2948d1f819
2 changed files with 3 additions and 3 deletions
|
@ -90,7 +90,7 @@ void arm_bl1_early_platform_setup(void)
|
|||
bl1_tzram_layout.total_size = ARM_BL_RAM_SIZE;
|
||||
|
||||
#if TRANSFER_LIST
|
||||
secure_tl = transfer_list_ensure((void *)PLAT_ARM_EL3_FW_HANDOFF_BASE,
|
||||
secure_tl = transfer_list_init((void *)PLAT_ARM_EL3_FW_HANDOFF_BASE,
|
||||
PLAT_ARM_FW_HANDOFF_SIZE);
|
||||
assert(secure_tl != NULL);
|
||||
#endif
|
||||
|
|
|
@ -382,8 +382,8 @@ void arm_bl31_platform_setup(void)
|
|||
struct transfer_list_entry *te __unused;
|
||||
|
||||
#if TRANSFER_LIST && !RESET_TO_BL31
|
||||
ns_tl = transfer_list_ensure((void *)FW_NS_HANDOFF_BASE,
|
||||
PLAT_ARM_FW_HANDOFF_SIZE);
|
||||
ns_tl = transfer_list_init((void *)FW_NS_HANDOFF_BASE,
|
||||
PLAT_ARM_FW_HANDOFF_SIZE);
|
||||
if (ns_tl == NULL) {
|
||||
ERROR("Non-secure transfer list initialisation failed!\n");
|
||||
panic();
|
||||
|
|
Loading…
Add table
Reference in a new issue