[U-Boot] FW: [PATCH 18/30] riscv: invalidate the instruction cache before jumping to Linux
Auer, Lukas
lukas.auer at aisec.fraunhofer.de
Fri Oct 26 16:27:47 UTC 2018
Hi Rick,
On Mon, 2018-10-22 at 09:39 +0800, Rick Chen wrote:
> > From: Lukas Auer [mailto:lukas.auer at aisec.fraunhofer.de]
> > Sent: Saturday, October 20, 2018 6:08 AM
> > To: u-boot at lists.denx.de
> > Cc: Bin Meng; Lukas Auer; Greentime Hu; Alexander Graf; Rick Jian-
> > Zhi Chen(陳建志)
> > Subject: [PATCH 18/30] riscv: invalidate the instruction cache
> > before jumping to Linux
> >
> > Signed-off-by: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> > ---
> >
> > arch/riscv/lib/bootm.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/riscv/lib/bootm.c b/arch/riscv/lib/bootm.c index
> > a7a9fb921b..bc1d4b2864 100644
> > --- a/arch/riscv/lib/bootm.c
> > +++ b/arch/riscv/lib/bootm.c
> > @@ -38,6 +38,7 @@ int do_bootm_linux(int flag, int argc, char
> > *argv[], bootm_headers_t *images)
> > return 1;
> >
> > kernel = (void (*)(ulong, void *))images->ep;
> > + invalidate_icache_all();
>
> Hi Likas
>
> I wull use cleanup_before_linux() which is in cpu.c as below
>
I would prefer to keep the invalidate_icache_all() in bootm.c since it
is important in the context of the function. I do agree that the data
and instruction caches should be disabled in cleanup_before_linux().
Thanks,
Lukas
> int cleanup_before_linux(void)
> {
> disable_interrupts();
>
> /* turn off I/D-cache */
> cache_flush();
> icache_disable();
> dcache_disable();
>
> return 0;
> }
>
> and cache_flush() in cache.c as below
>
> void cache_flush(void)
> {
> invalidate_icache_all();
> flush_dcache_all();
> }
>
> Rick
>
> >
> > bootstage_mark(BOOTSTAGE_ID_RUN_OS);
> >
> > --
> > 2.17.2
> >
More information about the U-Boot
mailing list