[U-Boot] [Resend RFC PATCH 1/2] armv8: Fix dcache disable function
Stephen Warren
swarren at wwwdotorg.org
Fri Oct 14 22:23:18 CEST 2016
On 10/14/2016 02:17 PM, York Sun wrote:
> Current code turns off d-cache first, then flush all levels of cache.
> This results data loss. As soon as d-cache is off, the dirty cache
> is discarded according to the test on LS2080A. This issue was not
> seen as long as external L3 cache was flushed to push the data to
> main memory. However, external L3 cache is not guaranteed to have
> the data. To fix this, flush the d-cache by way/set first to make
> sure cache is clean before turning it off.
> diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
> index cd3f6c1..92d6277 100644
> --- a/arch/arm/cpu/armv8/cache_v8.c
> +++ b/arch/arm/cpu/armv8/cache_v8.c
> @@ -478,9 +478,9 @@ void dcache_disable(void)
> if (!(sctlr & CR_C))
> return;
>
> + flush_dcache_all();
> set_sctlr(sctlr & ~(CR_C|CR_M));
>
> - flush_dcache_all();
> __asm_invalidate_tlb_all();
> }
This one makes sense. I'll try and test it soon.
More information about the U-Boot
mailing list