From c36ae6a623b075192b20d93f9e3fe966961d86f4 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Tue, 25 Jun 2019 02:51:42 -0700 Subject: MLK-22105-3 imx8/imx8m: spl: Move bss clean up before arch_cpu_init Since rng_init is used arch_cpu_init, we have to clean up BSS section before it. Also remove the unnecessary memset to global data, because board_init_f_init_reserve already memset it. If we memset it in board_init_f, the gd->malloc_base is reset to 0 and will cause early malloc problem when CONFIG_MALLOC_F_ADDR is not set. Signed-off-by: Ye Li Reviewed-by: Peng Fan --- board/freescale/imx8mm_evk/spl.c | 7 ++----- board/freescale/imx8mm_val/spl.c | 7 ++----- board/freescale/imx8mn_evk/spl.c | 7 ++----- board/freescale/imx8mq_aiy/spl.c | 7 ++----- board/freescale/imx8mq_arm2/spl.c | 7 ++----- board/freescale/imx8mq_evk/spl.c | 7 ++----- board/freescale/imx8mq_phanbell/spl.c | 7 ++----- board/freescale/imx8qm_arm2/spl.c | 7 ++----- board/freescale/imx8qm_mek/spl.c | 7 ++----- board/freescale/imx8qxp_arm2/spl.c | 7 ++----- board/freescale/imx8qxp_mek/spl.c | 7 ++----- 11 files changed, 22 insertions(+), 55 deletions(-) (limited to 'board/freescale') diff --git a/board/freescale/imx8mm_evk/spl.c b/board/freescale/imx8mm_evk/spl.c index 10f00a50d20..ceba5eeb22b 100644 --- a/board/freescale/imx8mm_evk/spl.c +++ b/board/freescale/imx8mm_evk/spl.c @@ -221,8 +221,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -232,9 +232,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8mm_val/spl.c b/board/freescale/imx8mm_val/spl.c index 8d187deef16..f14946da8f4 100644 --- a/board/freescale/imx8mm_val/spl.c +++ b/board/freescale/imx8mm_val/spl.c @@ -231,8 +231,8 @@ int board_fit_config_name_match(const char *name) void board_init_f(ulong dummy) { - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -242,8 +242,5 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - board_init_r(NULL, 0); } diff --git a/board/freescale/imx8mn_evk/spl.c b/board/freescale/imx8mn_evk/spl.c index 835053f5f2f..17daed91f6c 100644 --- a/board/freescale/imx8mn_evk/spl.c +++ b/board/freescale/imx8mn_evk/spl.c @@ -203,8 +203,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -214,9 +214,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8mq_aiy/spl.c b/board/freescale/imx8mq_aiy/spl.c index 0b2c88f8e06..b299278a178 100644 --- a/board/freescale/imx8mq_aiy/spl.c +++ b/board/freescale/imx8mq_aiy/spl.c @@ -233,8 +233,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -246,9 +246,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8mq_arm2/spl.c b/board/freescale/imx8mq_arm2/spl.c index acf35be9a72..a1bf18dde80 100644 --- a/board/freescale/imx8mq_arm2/spl.c +++ b/board/freescale/imx8mq_arm2/spl.c @@ -221,8 +221,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -234,9 +234,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8mq_evk/spl.c b/board/freescale/imx8mq_evk/spl.c index 841329f6a52..2175cbfc66a 100644 --- a/board/freescale/imx8mq_evk/spl.c +++ b/board/freescale/imx8mq_evk/spl.c @@ -219,8 +219,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -232,9 +232,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8mq_phanbell/spl.c b/board/freescale/imx8mq_phanbell/spl.c index 75ecb93b148..53dd61a7d8c 100644 --- a/board/freescale/imx8mq_phanbell/spl.c +++ b/board/freescale/imx8mq_phanbell/spl.c @@ -212,8 +212,8 @@ void board_init_f(ulong dummy) { int ret; - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -225,9 +225,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - ret = spl_init(); if (ret) { debug("spl_init() failed: %d\n", ret); diff --git a/board/freescale/imx8qm_arm2/spl.c b/board/freescale/imx8qm_arm2/spl.c index cb25483c100..2005b0cf1c6 100644 --- a/board/freescale/imx8qm_arm2/spl.c +++ b/board/freescale/imx8qm_arm2/spl.c @@ -224,8 +224,8 @@ void spl_board_init(void) void board_init_f(ulong dummy) { - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -235,9 +235,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - board_init_r(NULL, 0); } diff --git a/board/freescale/imx8qm_mek/spl.c b/board/freescale/imx8qm_mek/spl.c index 74366abe91f..7eab9a9980f 100644 --- a/board/freescale/imx8qm_mek/spl.c +++ b/board/freescale/imx8qm_mek/spl.c @@ -219,8 +219,8 @@ int board_fit_config_name_match(const char *name) void board_init_f(ulong dummy) { - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -230,9 +230,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - board_init_r(NULL, 0); } diff --git a/board/freescale/imx8qxp_arm2/spl.c b/board/freescale/imx8qxp_arm2/spl.c index e9cb7eb532f..c1a77a86e27 100644 --- a/board/freescale/imx8qxp_arm2/spl.c +++ b/board/freescale/imx8qxp_arm2/spl.c @@ -208,8 +208,8 @@ void spl_board_prepare_for_boot(void) void board_init_f(ulong dummy) { - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -219,9 +219,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - board_init_r(NULL, 0); } diff --git a/board/freescale/imx8qxp_mek/spl.c b/board/freescale/imx8qxp_mek/spl.c index a8c88299728..eb8fbcc2521 100644 --- a/board/freescale/imx8qxp_mek/spl.c +++ b/board/freescale/imx8qxp_mek/spl.c @@ -215,8 +215,8 @@ int board_fit_config_name_match(const char *name) void board_init_f(ulong dummy) { - /* Clear global data */ - memset((void *)gd, 0, sizeof(gd_t)); + /* Clear the BSS. */ + memset(__bss_start, 0, __bss_end - __bss_start); arch_cpu_init(); @@ -226,9 +226,6 @@ void board_init_f(ulong dummy) preloader_console_init(); - /* Clear the BSS. */ - memset(__bss_start, 0, __bss_end - __bss_start); - board_init_r(NULL, 0); } -- cgit v1.2.3