[U-Boot] [PATCH] mtd: nand: mxs: fix cache alignment for cache lines >32
Stefan Agner
stefan at agner.ch
Wed Aug 3 21:18:48 CEST 2016
On 2016-08-03 11:44, Fabio Estevam wrote:
> Hi Simon,
>
> On Wed, Aug 3, 2016 at 3:35 PM, Simon Glass <sjg at chromium.org> wrote:
>
>> Actually I think these are bugs and should be fixed. In this case,
I am completely with you Simon!
check_cache_range return 0, which actually leads to the cache operation
not being executed at all! Depending on the situation this can be quite
catastrophic...
>> from what I can tell netboot_common() should cache-align the size in
>> the call to:
>>
>> /* flush cache */
>> flush_cache(load_addr, size);
>
> Do you mean like this?
>
> --- a/cmd/net.c
> +++ b/cmd/net.c
> @@ -244,6 +244,8 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmd
> }
>
> /* flush cache */
> + load_addr &= ~(CONFIG_SYS_CACHELINE_SIZE - 1);
> + size = ALIGN(size, CONFIG_SYS_CACHELINE_SIZE);
> flush_cache(load_addr, size);
>
> bootstage_mark(BOOTSTAGE_ID_NET_LOADED);
>
> This makes the net warnings go away.
Yes, see my patch too.
https://patchwork.ozlabs.org/patch/654585/
So up until now, that stuff did not get flushed whenever the file size
was not cache line aligned, and nobody noticed... Is that cache flush
necessary at all?
>
> There is still this one that I am seeing:
>
> Kernel image @ 0x80800000 [ 0x000000 - 0x6fea70 ]
> ## Flattened Device Tree blob at 83000000
> Booting using the fdt blob at 0x83000000
> Using Device Tree in place at 83000000, end 83009c5d
>
> Starting kernel ...
>
> CACHE: Misaligned operation at range [00900000, 00900529]
> [ 0.000000] Booting Linux on physical CPU 0x0
>
> Any ideas where it may come from?
I did not had that one on i.MX 7
--
Stefan
More information about the U-Boot
mailing list