[U-Boot] [PATCH 2/4] net: round up before calling flush_cache

Marek Vasut marex at denx.de
Sun Apr 1 15:46:53 CEST 2012


Dear Stefano Babic,

> If the range passed to flush_cache is not multiple
> of ARCH_DMA_MINALIGN, a warning due to mislaignment
> is printed.
> Detected with fec_mxc, mx35 boards:
> 
> CACHE: Misaligned operation at range [80800000, 8083c310]
> 
> Signed-off-by: Stefano Babic <sbabic at denx.de>
> CC: Marek Vasut <marex at denx.de>
> CC: Joe Hershberger <joe.hershberger at gmail.com>
> Cc: Wolfgang Denk <wd at denx.de>
> ---
>  common/cmd_net.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/common/cmd_net.c b/common/cmd_net.c
> index 65f32bc..a500919 100644
> --- a/common/cmd_net.c
> +++ b/common/cmd_net.c
> @@ -256,7 +256,7 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t
> *cmdtp, int argc, }
> 
>  	/* flush cache */
> -	flush_cache(load_addr, size);
> +	flush_cache(load_addr, roundup(size, ARCH_DMA_MINALIGN));

This ain't gonna slide. You might overwrite something, even though this is just 
loading into memory, right? I'm not quite sure how to handle this kind of 
unaligned access.

But adding at least if (unaligned) debug(...); to aid people easily finding 
these trouble would be nice ;-)

>  	bootstage_mark(BOOTSTAGE_ID_NET_LOADED);

Best regards,
Marek Vasut


More information about the U-Boot mailing list