u-boot: align cache flushes in load_elf_image_shdr to line boundaries
authorNeil Stainton <nstainton@asl-control.co.uk>
Mon, 20 Aug 2018 15:46:19 +0000 (15:46 +0000)
committerTom Rini <trini@konsulko.com>
Fri, 24 Aug 2018 19:59:33 +0000 (15:59 -0400)
Prevent cache warning messages when using the 'bootelf' command on an
Arm target. Round down each section start address and round up the
respective section end to the nearest cache line.

Currently when using bootelf to load an image on Arm, several warnings
such as the following appear in the console:
  CACHE: Misaligned operation at range [878000008783c5e0]
  CACHE: Misaligned operation at range [8783c5e08784b3e0]

Signed-off-by: Neil Stainton <nstainton@asl-control.co.uk>
[trini: Reword commit message to include the info after the --- which
included the Signed-off-by line, and change ' at ' to '@']
Signed-off-by: Tom Rini <trini@konsulko.com>
cmd/elf.c

index 22cba58c68c07426988f5557bc8e21569d7d7858..c8e6e7424c647034015de3fa7bd64c45c5de5803 100644 (file)
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -115,7 +115,10 @@ static unsigned long load_elf64_image_shdr(unsigned long addr)
                        memcpy((void *)(uintptr_t)shdr->sh_addr,
                               (const void *)image, shdr->sh_size);
                }
-               flush_cache((ulong)shdr->sh_addr, shdr->sh_size);
+               flush_cache(rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN),
+                           roundup((shdr->sh_addr + shdr->sh_size),
+                                    ARCH_DMA_MINALIGN) -
+                                   rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN));
        }
 
        if (ehdr->e_machine == EM_PPC64 && (ehdr->e_flags &