mtd oob test is failing consistently at same places in NAND flash

Ivan Djelic ivan.djelic at parrot.com
Wed May 9 12:05:48 EDT 2012


On Wed, May 09, 2012 at 04:46:17PM +0100, Philip, Avinash wrote:
> > > 
> > > Yes, we had using patched kernel. OOB free region is exposed.
> > > 
> > > ECC layout will be as follows.
> > > 
> > > 0-1	-> BAD block marking
> > > 2-57  -> ECC byte position, ( 14 bytes for 512 byte)
> > > 58-63 -> oob free bytes
> > > 
> > > mtd->ecclayout->eccbytes		= 56
> > > mtd->ecclayout->eccpos[0]	= 2
> > > mtd->ecclayout->oobavail		= 6
> > > mtd->ecclayout->oobfree[0].offset	= 58
> > > mtd->ecclayout->oobfree[0].length	= 6
> > > 
> > 
> > OK, then it is quite normal that mtd_oobtest should fail when it encounters a bitflip (one that does not match the programmed data) in those unprotected 6 bytes (58-63). What do you think ?
> 
> 
> Is this behavior is expected for which OOB area left unprotected?
> (I am not sure, What I understood is with failure in OOB area, ECC won't be useful.

Yes.

> Is it ideally we should have ECC protection for OOB area also required?)

There is no need for ECC protection on free oob bytes if you do not use them.

> Basically I am testing why bit flips is happening in OOB area. Some observation related
> to mtd_oob test in the setup we are having is
> 1. Modify mtd_oob test to write patterns (0x0, 0x55, 0xAA, 0xff), then test is getting passed
> for all patterns.

OK, strange.

> 2. On inserting a delay of 10 ms after erase_whole_device() in mtd oob test, test is getting passed.
> I can't correlate how test is getting passed on modifying pattern as we are covering all bits in
> either of the patterns.
> 
> On inserting delay test is getting passed, will point to me some problems in command issue. I am
> debugging on this.
> 

OK. If you are relying on a R/nB pin to wait for operation completion, you
might want to check that is works properly.

BR,
-- 
Ivan



More information about the linux-mtd mailing list