[U-Boot] [PATCH] ARM: mvebu: handle unused DRAM banks with ECC enabled
Joshua Scott
Joshua.Scott at alliedtelesis.co.nz
Sun Sep 24 22:07:16 UTC 2017
I can confirm that this patch fixes the issue I was seeing (data_abort, single and dual-bit ecc errors during dram_ecc_scrubbing).
Tested on a board with the Marvell AlleyCat3 switch/SoC.
Cheers,
Joshua Scott
________________________________________
From: Chris Packham <judge.packham at gmail.com>
Sent: Saturday, 23 September 2017 4:50 a.m.
To: u-boot at lists.denx.de
Cc: Joshua Scott; Chris Packham; Prafulla Wadaskar; Albert Aribaud; Luka Perkov; Stefan Roese
Subject: [PATCH] ARM: mvebu: handle unused DRAM banks with ECC enabled
dram_ecc_scrubbing() had code to skip unused DRAM banks but it would not
work because mvebu_sdram_bs() returns 0 and the code was subtracting 1
before checking the size. Remove the -1 from the bank size and the +1
from the total which will skip unused banks and still calculate the
correct size. Put the -1 where it is needed for scrubbing via the xor
engine.
Reported-by: Joshua Scott <joshua.scott at alliedtelesis.co.nz>
Signed-off-by: Chris Packham <judge.packham at gmail.com>
---
arch/arm/mach-mvebu/dram.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-mvebu/dram.c b/arch/arm/mach-mvebu/dram.c
index e3f304c366..f946c0cffe 100644
--- a/arch/arm/mach-mvebu/dram.c
+++ b/arch/arm/mach-mvebu/dram.c
@@ -179,11 +179,11 @@ static void dram_ecc_scrubbing(void)
reg_write(REG_SDRAM_CONFIG_ADDR, temp);
for (cs = 0; cs < CONFIG_NR_DRAM_BANKS; cs++) {
- size = mvebu_sdram_bs(cs) - 1;
+ size = mvebu_sdram_bs(cs);
if (size == 0)
continue;
- total = (u64)size + 1;
+ total = (u64)size;
total_mem += (u32)(total / (1 << 30));
start_addr = 0;
mv_xor_init2(cs);
@@ -194,7 +194,7 @@ static void dram_ecc_scrubbing(void)
size -= start_addr;
}
- mv_xor_mem_init(SCRB_XOR_CHAN, start_addr, size,
+ mv_xor_mem_init(SCRB_XOR_CHAN, start_addr, size - 1,
SCRUB_MAGIC, SCRUB_MAGIC);
/* Wait for previous transfer completion */
--
2.14.1
More information about the U-Boot
mailing list