[PATCH] mtd: nandbiterrs: Support for NAND biterrors test on platforms without raw write

Boris Brezillon boris.brezillon at free-electrons.com
Sun May 8 09:47:32 PDT 2016


On Sun, 8 May 2016 18:44:51 +0200
Boris Brezillon <boris.brezillon at free-electrons.com> wrote:

> Hi Iwo,
> 
> On Fri, 6 May 2016 10:00:12 +1000
> Iwo Mergler <iwo.mergler at netcommwireless.com> wrote:
> 
> > Hi all,
> > 
> > 
> > I'm vaguely aware that there is an ongoing effort to move this
> > stuff to mtd-utils, but I was unable to find a source tree
> > with the work so far.
> > 
> > Below is a single-line patch for the kernel tests, feel free
> > to apply to the userspace source as well.
> > 
> > 
> > Best regards,
> > 
> > Iwo
> > 
> > 
> > Support for NAND biterrors test on platforms without raw write
> > 
> > While the default test mode relies on raw write (mtd_write_oob) to introduce
> > bit errors into a page, the rewrite test mode doesn't need it.
> > 
> > Some drivers use eldritch data/ECC arrangements in a NAND page and reshuffle
> > things on-the-fly, to present a normal page view to the kernel. Typically,
> > raw write / read is unsupported on such platforms. Examples are Freescale
> > MXS and Qualcomm MDM9 and probably many others.  

Sorry, I didn't realize you were talking about freescale (i.e. GPMI
controller). I'm pretty sure raw access is properly supported on this
platform, and if it's not, you should fix the ->{read,write}_page_raw()
implementations.

> 
> Sorry, but I think such platforms should unshuffle the data/ECC
> sections to expose a standard in-band/out-of-band view to the upper
> layer.
> 
> This is completely doable since ->read_page_raw()/->write_page_raw()
> can be overloaded (see the GPMI implementation or the default
> ECC_HW_SYNDROME raw implementation if you need examples).
> 
> So, it's a NACK on my side.
> 
> Best Regards,
> 
> Boris
> 
> 
> > 
> > Changed the overwrite test to use normal writes.
> > 
> > Signed-off-by: Iwo Mergler <Iwo.Mergler at netcommwireless.com>
> > ---
> >   drivers/mtd/tests/nandbiterrs.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/mtd/tests/nandbiterrs.c 
> > b/drivers/mtd/tests/nandbiterrs.c
> > index 09a4cca..f26dec8 100644
> > --- a/drivers/mtd/tests/nandbiterrs.c
> > +++ b/drivers/mtd/tests/nandbiterrs.c
> > @@ -290,7 +290,7 @@ static int overwrite_test(void)
> > 
> >       while (opno < max_overwrite) {
> > 
> > -        err = rewrite_page(0);
> > +        err = write_page(0);
> >           if (err)
> >               break;
> >   
> 
> 
> 



-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com



More information about the linux-mtd mailing list