From mboxrd@z Thu Jan 1 00:00:00 1970 From: Auer, Lukas Date: Fri, 26 Oct 2018 16:27:47 +0000 Subject: [U-Boot] FW: [PATCH 18/30] riscv: invalidate the instruction cache before jumping to Linux In-Reply-To: References: <20181019220743.15020-1-lukas.auer@aisec.fraunhofer.de> <20181019220743.15020-19-lukas.auer@aisec.fraunhofer.de> <752D002CFF5D0F4FA35C0100F1D73F3FA3A3568B@ATCPCS16.andestech.com> Message-ID: <4d4e6e3dd894c6f40a408cd3c138c5064988c904.camel@aisec.fraunhofer.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de 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 > > --- > > > > 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 > >