ECC Errors/Sub-page Read Failures

Peter LaDow petela at gocougs.wsu.edu
Mon Mar 3 14:22:59 EST 2014


On Fri, Feb 28, 2014 at 7:27 PM, Peter LaDow <petela at gocougs.wsu.edu> wrote:
> What boggles me is that things work just fine with our NAND controller
> and driver with the earlier revision part, and suddenly fail with this
> new part.  Samsung claims the flash layout is identical (OOB space is
> the same), the level of ECC necessary is the same, etc.

After more digging through the mailing list and the MTD web page, I've
tried some things.  I disabled the sub-pages:

u-boot> set bootargs 'ubi.mtd=1,2048 ...'

Then a ubiformat followed by a ubimkvol/ubiupdatevol work fine.  And
after rebooting, things look good.  In fact, this disabling of
sub-pages makes the NAND perfectly functional (though the number of
LEB was reduced from 16384 to 16376--ignoring bad blocks).

This is confusing that our controller/driver works fine with the
previous part.  In fact, the mtd_subpagetest works fine with the exact
same controller/driver/kernel version with the older revision part,
but fails with the same controller/driver/kernel on the newer part.
So clearly our driver handles sub-page reads fine.

So, this leads me to the conclusion that the newer part does not
support sub-page reads OR the part has changed the sub-page read
mechanism.  Yet reviewing the datasheets there is nothing to indicate
that this is the case.  In fact, the datasheets look identical (except
for the maximum busy pulse time).  And the datasheets suggest sub-page
reads are possible via random data out accesses.

Now, we can of course get around this by disabling sub-page reads.
But of course this isn't ideal, and isn't consistent with our previous
use of the NAND.  In fact, it breaks compatibility with our older
firmware and newer hardware.

Any suggestions on how to debug this would be very helpful.

Thanks,
Pete



More information about the linux-mtd mailing list