On Fri, Apr 24, 2009 at 10:58 AM, Peter Stuge peter@stuge.se wrote:
Ward Vandewege wrote:
Confirmed, reverting that hunk fixes the problem for me.
Oops.
So does ECC always have to be scrubbed going out of self refresh? That seems bad.
well, were these failures occuring from a resume or cold boot?
If we're doing a cold boot and not clearing memory (i.e. not scrubbing ECC tags), that may be trouble. I get the impression from this patch that that is what we are doing.
The safest way to scrub ECC, if you don't know if you are resuming or cold booting, is to read the memory and write it back. Even if the memory is garbage, the ECC tags will end up with a valid value. This is slower however.
We've always done the clear_memory because we did not have resume. I think having resume is going to affect every cpu type.
But, do we know if it is a resume? Maybe we should have this kind of thing: if (is_resume()) /* or whatever it's called */ clear_memory( _RAMBASE, (CONFIG_LB_MEM_TOPK << 10) - _RAMBASE - DCACHE_RAM_SIZE); else clear_memory(0, ((CONFIG_LB_MEM_TOPK<<10) - DCACHE_RAM_SIZE));
hmm, did I get that backwards? Anyway, hope this makes sense.
ron