From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Date: Thu, 21 Apr 2016 17:12:59 +0000 Subject: [U-Boot] [PATCH] arc/cache: really do flush_dcache_all() even if IOC exists In-Reply-To: <1460975319-6187-1-git-send-email-abrodkin@synopsys.com> References: <1460975319-6187-1-git-send-email-abrodkin@synopsys.com> Message-ID: <1461258773.2928.79.camel@synopsys.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, On Mon, 2016-04-18 at 13:28 +0300, Alexey Brodkin wrote: > flush_dcache_all() is used in the very end of U-Boot self relocation > to write back all copied and then patched code and data to their > new location in the very end of available memory space. > > Since that has nothing to do with IO (i.e. no external DMA happens > here) IOC won't help here and we need to write back data cache contents > manually. > > Signed-off-by: Alexey Brodkin > --- > ?arch/arc/lib/cache.c | 7 ++----- > ?1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/arch/arc/lib/cache.c b/arch/arc/lib/cache.c > index 56988dd..d1fb661 100644 > --- a/arch/arc/lib/cache.c > +++ b/arch/arc/lib/cache.c > @@ -430,13 +430,10 @@ void invalidate_dcache_all(void) > ? > ?void flush_dcache_all(void) > ?{ > -#ifdef CONFIG_ISA_ARCV2 > - if (!ioc_exists) > -#endif > - __dc_entire_op(OP_FLUSH); > + __dc_entire_op(OP_FLUSH); > ? > ?#ifdef CONFIG_ISA_ARCV2 > - if (slc_exists && !ioc_exists) > + if (slc_exists) > ? __slc_entire_op(OP_FLUSH); > ?#endif > ?} Applied, thanks! -Alexey