Since
2460098cffacd18729262e3ed36656e6943783ed (fs/fat: Reduce stack usage)
Trying to load a file off a FAT fs on i.MX 6 based CuBox-i4Pro fails:

switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
CACHE: Misaligned operation at range [8f89da30, 8f89e230]
CACHE: Misaligned operation at range [8f89da30, 8f89e230]
ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89da30
ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e230
CACHE: Misaligned operation at range [8f89da30, 8f89e230]
CACHE: Misaligned operation at range [8f89da30, 8f89e230]
ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89da30
ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e230
CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0]
CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0]
CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0]
CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0]
CACHE: Misaligned operation at range [8f89dc68, 8f89e468]
CACHE: Misaligned operation at range [8f89dc68, 8f89e468]
ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dc68
ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e468
...

Switching the malloc() calls to malloc_cache_aligned() avoids
the alignment errors and allows booting to continue.

Signed-off-by: Jonathan Gray <j...@jsg.id.au>
---
 fs/fat/fat.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 3d3e17e8fa..d299f317a9 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -1038,7 +1038,7 @@ int fat_exists(const char *filename)
        fat_itr *itr;
        int ret;
 
-       itr = malloc(sizeof(fat_itr));
+       itr = malloc_cache_aligned(sizeof(fat_itr));
        ret = fat_itr_root(itr, &fsdata);
        if (ret)
                return 0;
@@ -1055,7 +1055,7 @@ int fat_size(const char *filename, loff_t *size)
        fat_itr *itr;
        int ret;
 
-       itr = malloc(sizeof(fat_itr));
+       itr = malloc_cache_aligned(sizeof(fat_itr));
        ret = fat_itr_root(itr, &fsdata);
        if (ret)
                return ret;
@@ -1089,7 +1089,7 @@ int file_fat_read_at(const char *filename, loff_t pos, 
void *buffer,
        fat_itr *itr;
        int ret;
 
-       itr = malloc(sizeof(fat_itr));
+       itr = malloc_cache_aligned(sizeof(fat_itr));
        ret = fat_itr_root(itr, &fsdata);
        if (ret)
                return ret;
-- 
2.14.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to