From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Tue, 9 Jan 2018 15:59:23 -0500 Subject: [U-Boot] api: bootelf: go: flush cache before starting In-Reply-To: <20171204183345.13755-1-manu@bidouilliste.com> References: <20171204183345.13755-1-manu@bidouilliste.com> Message-ID: <20180109205923.GA5652@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, Dec 04, 2017 at 07:33:45PM +0100, Emmanuel Vadot wrote: > From: Warner Losh > > Some application might load some code at location that contain stale > cache entries. Before running a elf or raw binary, flush the caches > if they are enabled. > > Reviewed-by: Tom Rini > Signed-off-by: Emmanuel Vadot > --- > api/api.c | 5 +++++ > cmd/boot.c | 4 ++++ > cmd/elf.c | 5 +++++ > 3 files changed, 14 insertions(+) > > diff --git a/api/api.c b/api/api.c > index 7eee2fc083..853a3f7b0a 100644 > --- a/api/api.c > +++ b/api/api.c > @@ -290,6 +290,11 @@ static int API_dev_close(va_list ap) > if (!err) > di->state = DEV_STA_CLOSED; > > + if (dcache_status()) > + flush_dcache_all(); > + if (icache_status()) > + invalidate_icache_all(); > + > return err; > } > > diff --git a/cmd/boot.c b/cmd/boot.c > index 72f2cf362d..b66ae67fcb 100644 > --- a/cmd/boot.c > +++ b/cmd/boot.c > @@ -19,6 +19,10 @@ __attribute__((weak)) > unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc, > char * const argv[]) > { > + if (dcache_status()) > + flush_dcache_all(); > + if (icache_status()) > + invalidate_icache_all(); > return entry (argc, argv); > } > > diff --git a/cmd/elf.c b/cmd/elf.c > index 5745a389da..5126c0e57d 100644 > --- a/cmd/elf.c > +++ b/cmd/elf.c > @@ -109,6 +109,11 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]), > { > unsigned long ret; > > + if (dcache_status()) > + flush_dcache_all(); > + if (icache_status()) > + invalidate_icache_all(); > + > /* > * pass address parameter as argv[0] (aka command name), > * and all remaining args We do not have these flushes on all architectures, so as is travis-ci would fail, as does 'make tests'. Thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: