[U-Boot] [PATCH] armv8: Flush dcache before switching to EL2

Albert ARIBAUD albert.u.boot at aribaud.net
Mon Apr 7 22:23:44 CEST 2014


Hi York,

On Mon, 31 Mar 2014 14:40:32 -0700, York Sun <yorksun at freescale.com>
wrote:

> For ARMv8, U-boot has been running at EL3 with cache and MMU enabled.
> Without proper setup for EL2, cache and MMU are both disabled (out of
> reset). Before switching, we need to flush the dcache to make sure the
> data is in the main memory.
> 
> Signed-off-by: York Sun <yorksun at freescale.com>
> ---
>  arch/arm/lib/bootm.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
> index a8295bf..9782ddb 100644
> --- a/arch/arm/lib/bootm.c
> +++ b/arch/arm/lib/bootm.c
> @@ -199,6 +199,7 @@ static void do_nonsec_virt_switch(void)
>  
>  #ifdef CONFIG_ARM64
>  	smp_kick_all_cpus();
> +	flush_dcache_all();	/* flush cache before swtiching to EL2 */
>  	armv8_switch_to_el2();
>  #ifdef CONFIG_ARMV8_SWITCH_TO_EL1
>  	armv8_switch_to_el1();

Applied as a bugfix to u-boot-arm/master, thanks!

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list