[RFC PATCH 3/3] mips: spl: Flush cache before jumping to U-Boot proper

Daniel Schwierzeck daniel.schwierzeck at gmail.com
Wed Apr 15 13:43:14 CEST 2020



Am 10.04.20 um 13:04 schrieb Stefan Roese:
> This patch adds a MIPS specific jump_to_image_no_args() implementation,
> which flushes the U-Boot proper image loaded from the boot device in
> SPL before jumping to it.
> 
> It has been noticed on MT76x8, that this cache flush is needed. Other
> MIPS platforms might need it as well.
> 
> Signed-off-by: Stefan Roese <sr at denx.de>
> Cc: Weijie Gao <weijie.gao at mediatek.com>
> Cc: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
> Cc: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> ---
>  arch/mips/lib/boot.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/arch/mips/lib/boot.c b/arch/mips/lib/boot.c
> index db862f6379..bc620abd9b 100644
> --- a/arch/mips/lib/boot.c
> +++ b/arch/mips/lib/boot.c
> @@ -6,6 +6,7 @@
>  #include <common.h>
>  #include <command.h>
>  #include <cpu_func.h>
> +#include <spl.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -21,3 +22,16 @@ unsigned long do_go_exec(ulong (*entry)(int, char * const []),
>  
>  	return entry(argc, argv);
>  }
> +
> +void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
> +{
> +	typedef void __noreturn (*image_entry_noargs_t)(void);
> +	image_entry_noargs_t image_entry =
> +		(image_entry_noargs_t)spl_image->entry_point;
> +
> +	/* Flush cache before jumping to application */
> +	flush_cache((unsigned long)spl_image->load_addr, spl_image->size);
> +
> +	debug("image entry point: 0x%lx\n", spl_image->entry_point);
> +	image_entry();
> +}
> 

the function itself looks good. But arch/mips/lib/boot.c depends on
CONFIG_CMD_GO (from Makefile: obj-$(CONFIG_CMD_GO) += boot.o)

I think it's better if we establish an arch/mips/lib/spl.c for generic
but MIPS specific SPL stuff and wrap it with CONFIG_SPL_BUILD.

-- 
- Daniel


More information about the U-Boot mailing list