[U-Boot] [PATCH 3/5] api: Flush cache when closing api

Dr. Philipp Tomsich philipp.tomsich at theobroma-systems.com
Mon Apr 30 08:37:50 UTC 2018


> On 30 Apr 2018, at 10:34, Emmanuel Vadot <manu at freebsd.org> wrote:
> 
> Signed-off-by: Emmanuel Vadot <manu at freebsd.org>
> ---
> api/api.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
> 
> diff --git a/api/api.c b/api/api.c
> index 7eee2fc083..7d1608b520 100644
> --- a/api/api.c
> +++ b/api/api.c
> @@ -290,6 +290,17 @@ static int API_dev_close(va_list ap)
> 	if (!err)
> 		di->state = DEV_STA_CLOSED;
> 
> +#if defined(CONFIG_SYS_HAVE_DCACHE_MAINTENANCE) && \
> +	!defined(CONFIG_SYS_DCACHE_OFF)
> +	if (dcache_status())
> +		flush_dcache_all();
> +#endif
> +#if defined(CONFIG_SYS_HAVE_ICACHE_MAINTENANCE) && \
> +	!defined(CONFIG_SYS_ICACHE_OFF)
> +	if (icache_status())
> +		invalidate_icache_all();
> +#endif

Wouldn’t it be a cleaner option to make flush_dcache_all and invalidate_icache_all
weak-functions and provide a default implementation that does nothing. Those
architectures that then need to implement specific cache maintenance, could
override these as required.

> 	return err;
> }
> 
> -- 
> 2.16.3
> 



More information about the U-Boot mailing list