瀏覽代碼

spl: atf: Fix invalid bl32 pc when bl32 is absent

'bl2_to_bl31_params->bl32_ep_info' is Null and '&bl2_to_bl31_params->bl32_ep_info->pc'
is 0x8 when bl32 is absent. That means the pc value is determined by u-boot-spl.bin.
The 0x8 offset of u-boot-spl.bin is the value of '_TEXT_BASE', i.e. CONFIG_SPL_TEXT_BASE.

So far, only rk3576 without bl32 would trigger this issue as DRAM base is 0x40000000.

Let's init bl32_{ep,image}_info even bl32 is absent.

Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: Ic928301baee1c7941f0befd7a89aa74dcbd88cb2
Joseph Chen 6 月之前
父節點
當前提交
2687dce261
共有 1 個文件被更改,包括 1 次插入5 次删除
  1. 1 5
      common/spl/spl_atf.c

+ 1 - 5
common/spl/spl_atf.c

@@ -52,16 +52,13 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i
 	SET_PARAM_HEAD(bl2_to_bl31_params->bl31_image_info,
 		       ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0);
 
-	if (bl32_entry == -1)
-		goto bl33_setup;
-
 	/* Fill BL32 related information */
 	bl2_to_bl31_params->bl32_ep_info = &bl31_params_mem.bl32_ep_info;
 	bl32_ep_info = &bl31_params_mem.bl32_ep_info;
 	SET_PARAM_HEAD(bl32_ep_info, ATF_PARAM_EP, ATF_VERSION_1,
 		       ATF_EP_SECURE);
 
-	bl32_ep_info->pc = bl32_entry;
+	bl32_ep_info->pc = bl32_entry == -1 ? 0 : bl32_entry;
 	bl32_ep_info->spsr = SPSR_64(MODE_EL1, MODE_SP_ELX,
 				     DISABLE_ALL_EXECPTIONS);
 
@@ -69,7 +66,6 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i
 	SET_PARAM_HEAD(bl2_to_bl31_params->bl32_image_info,
 		       ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0);
 
-bl33_setup:
 	/* Fill BL33 related information */
 	bl2_to_bl31_params->bl33_ep_info = &bl31_params_mem.bl33_ep_info;
 	bl33_ep_info = &bl31_params_mem.bl33_ep_info;