[U-Boot] [PATCH 3/7] 83xx/85xx/86xx: Add ECC support

Ira W. Snyder iws at ovro.caltech.edu
Tue Nov 10 17:51:24 CET 2009


On Mon, Nov 09, 2009 at 09:07:25PM -0600, Peter Tyser wrote:

[ big snip ]

> > 
> > I haven't looked at your code. When I was running the old ecc command, I
> > had the 83xx reference manual open to decode the command's output, IIRC.
> > 
> > PS - I'm happy to test stuff on 83xx, I'll try and find time to test
> > this patch series tomorrow.
> 
> Thanks, its much appreciated.
> 

Ok, here are my results, this is on a 8349EMDS-derived board. My
8349EMDS eval board doesn't have ECC memory.

1) It might be nice to have something to print the current injection
registers. It is not a big deal, anyone using this should be an expert
anyway.

2) ecc inject off didn't seem to work, see the following capture:

=> ecc info
No ECC errors have occurred
=> ecc inject low 0x1
=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0ff7ae40
        Data:   0x0fffdf9c_0ff7aed1     ECC:    0x81
        Expect: 0x0fffdf9c_0ff7aed0     ECC:    0x81
        Net:    DATA0
        Syndrome: 0x3b
        Single-Bit errors: 0x1e
        Attrib: 0x01002001
        Detect: 0x80000004 (MME, SBE) 

=> ecc inject off

# Ok, now error injection is off, I still expect some errors to be
# present in the error registers

=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0ff7ae1c
        Data:   0x0fffdf9c_0ff7d2a1     ECC:    0xe4
        Expect: 0x0fffdf9c_0ff7d2a0     ECC:    0xe4
        Net:    DATA0
        Syndrome: 0x3b
        Single-Bit errors: 0xd1
        Attrib: 0x01003001
        Detect: 0x80000004 (MME, SBE) 

# And there was the error. Now, I don't expect any more errors to
# be present, after all, injection is disabled.
#
# But there is one! Why?

=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0fff8a0c
        Data:   0x0fff8a00_0fff8a01     ECC:    0xff
        Expect: 0x0fff8a00_0fff8a00     ECC:    0xff
        Net:    DATA0
        Syndrome: 0x3b
        Single-Bit errors: 0x04
        Attrib: 0x01003001
        Detect: 0x00000000
=> 

# Note that I keep seeing ecc errors until I run the command:
# ecc inject low 0




Here is another trace showing "interesting" behavior:

=> ecc info
No ECC errors have occurred
=> ecc inject high 1
=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0ff7ae40
        Data:   0x0fffdf9d_0ff7aed0     ECC:    0x81
        Expect: 0x0fffdf9c_0ff7aed0     ECC:    0x81
        Net:    DATA32
        Syndrome: 0xce
        Single-Bit errors: 0xd8
        Attrib: 0x01002001
        Detect: 0x80000004 (MME, SBE) 

=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0fff89c4
        Data:   0x0fff89b9_0ff7d268     ECC:    0x02
        Expect: 0x0fff89b8_0ff7d268     ECC:    0x02
        Net:    DATA32
        Syndrome: 0xce
        Single-Bit errors: 0xea
        Attrib: 0x01003001
        Detect: 0x80000004 (MME, SBE) 

=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0ff7d2e8
        Data:   0x00000001_0ff7d300     ECC:    0x99
        Expect: 0x00000000_0ff7d300     ECC:    0x99
        Net:    DATA32
        Syndrome: 0xce
        Single-Bit errors: 0x30
        Attrib: 0x01002001
        Detect: 0x80000004 (MME, SBE) 

=> ecc inject high 0
=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0ff7d2e8
        Data:   0x00000001_0ff7d300     ECC:    0x99
        Expect: 0x00000000_0ff7d300     ECC:    0x99
        Net:    DATA32
        Syndrome: 0xce
        Single-Bit errors: 0x81
        Attrib: 0x01002001
        Detect: 0x80000004 (MME, SBE) 

=> ecc info

WARNING: ECC error in DDR Controller 0
        Addr:   0x0_0fff8a0c
        Data:   0x0fff8a01_0fff8a00     ECC:    0xff
        Expect: 0x0fff8a00_0fff8a00     ECC:    0xff
        Net:    DATA32
        Syndrome: 0xce
        Single-Bit errors: 0x04
        Attrib: 0x01003001
        Detect: 0x00000000
=> ecc info
No ECC errors have occurred
=> ecc info
No ECC errors have occurred


# Why did it take two runs of ecc info to clear all of the errors?

Other than the above strangeness, everything is working great on my 83xx
board. I think the new output is pretty nice. It serves my purposes
equally well to the old code.

Ira


More information about the U-Boot mailing list