ARM: datacache always disabled when RAM extends to 0xFFFFFFFF
PATCH 1/1 ARM: datacache always disabled when RAM extends to 0xFFFFFFFF
The dram_bank_mmu_setup() function contains a loop to configure the data caching policy for each 1 Mbyte page of the RAM memory range. When RAM extends to 0xFFFFFFFF, the RAM start address + the RAM size will equal 2^32. But because the RAM start address and RAM size are unsigned longs, the result of this addition is zero. The loop is therefore not executed and the datacache is effectively disabled.
--- arch/arm/lib/cache-cp15.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/lib/cache-cp15.c +1 -1
@@ -69,7 +69,7 @@ __weak void dram_bank_mmu_setup(int bank)debug ("%s: bank: %d\n" , __func__, bank);for (i = bd->bi_dram[bank].start >>20 ; - i < (bd->bi_dram[bank].start + bd->bi_dram[bank].size) >>20 ; + i < ((u64 )bd->bi_dram[bank].start + (u64 )bd->bi_dram[bank].size) >>20 ; i++) {#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH )set_section_dcache (i,DCACHE_WRITETHROUGH );
Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: datacache always disabled when RAM extends to 0xFFFFFFFF
Quoted 8 lines · Jaccon Bastiaansen
The
dram_bank_mmu_setup()function contains a loop to configure the data caching policy for each 1 Mbyte page of the RAM memory range. When RAM extends to0xFFFFFFFF, the RAM start address + the RAM size will equal 2^32. But because the RAM start address and RAM size are unsigned longs, the result of this addition is zero. The loop is therefore not executed and the datacache is effectively disabled.Signed-off-by Jaccon Bastiaansen <[email protected]>
Yeah, I sent similar patch [1] long ago. Albert, care to pick it please ?
[1] http://lists.denx.de/pipermail/u-boot/2014-August/185254.html
Best regards,
Marek Vasut