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

Marek Vasut
2012-04-01T13:46:53Z

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@denx.de>
> CC: Marek Vasut <marex@denx.de>
> CC: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Wolfgang Denk <wd@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