public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Andrea Scian <rnd4@dave-tech.it>
Cc: "Richard Weinberger" <richard@nod.at>,
	dedekind1@gmail.com, linux-mtd@lists.infradead.org,
	"David Woodhouse" <dwmw2@infradead.org>,
	"Brian Norris" <computersforpeace@gmail.com>,
	"Qi Wang 王起 \"(qiwang)\"" <qiwang@micron.com>,
	"Iwo Mergler" <Iwo.Mergler@netcommwireless.com>,
	"Jeff Lauruhn (jlauruhn)" <jlauruhn@micron.com>
Subject: Re: UBI/UBIFS: dealing with MLC's paired pages
Date: Fri, 18 Sep 2015 09:41:36 +0200	[thread overview]
Message-ID: <20150918094136.57178319@bbrezillon> (raw)
In-Reply-To: <55FBBA6E.9070203@dave-tech.it>

Hi Andrea,

On Fri, 18 Sep 2015 09:17:02 +0200
Andrea Scian <rnd4@dave-tech.it> wrote:

> 
> Dear all,
> 
> Il 17/09/2015 18:47, Richard Weinberger ha scritto:
> > Boris,
> >
> > Am 17.09.2015 um 17:46 schrieb Boris Brezillon:
> >>> I'd
> >>> also write a good UBI power-cut test application.
> >> Not sure what you mean by a UBI power-cut application?
> > UBI has a mechanism so emulate a power-cut. Userspace
> > can trigger it. I assume Artem meant that we could extend the mechanism
> > to emulate paired page related issues in UBI.
> >
> >>> And then I'd start
> >>> playing with various implementation approaches.
> >> Yep, that was the plan, I was hoping you could help me exclude some of
> >> them, but I guess testing all of them is the only way to find the
> >> best one :-/.
> >>
> >>> I'd use the test-driven
> >>> approach.
> >> Hm, yep I guess that's the only way to test as much cases as possible,
> >> but even with that I doubt I'll be able to think of all the cases that
> >> could happen in real world.
> > Yeah, the crucial point is that we have to emulate paired pages very good.
> > Testing using emulation is nice but we need bare metal tests too.
> > I have one board with MLC NAND, I'll happily wear it do death. B-)
> 
> I think Boris has the same board somewhere ;-)

Yep :-).

> 
> I perfectly understand the reason why using nandsim (and powercut 
> simulator in general) but, AFAIK, the powercut problem is hard to 
> "simulate" because the main issue is when the device see a loss of power 
> in the middle of an operation (page write or block erase)

Well, it can be easily simulated in nandsim. Here is a dirty hack [1]
doing that. Of course my implementation is far from perfect, and a
lot of things are hardcoded (like the paired pages scheme), but I'm
pretty sure it is able to emulate the behavior of a power cut when a
specific page in block is accessed.
The other reason we want to simulate it is because we need to test what
happens if a corruption happens at specific places: corruption of UBI
EC, VID and payload data. This means that we need to be able to
simulate a powercut when a specific page (relatively to a block) is
accessed.

> 
> I think that the best approach for bare metal test is something like the 
> following:
> - connect a real powercut device (a simple relais that cut the main 
> power supply driven by a GPIO)
> - drive this device inside the MTD code (probably with random delay 
> after issuing a NAND command)

Hm, it's seems like a complicated infrastructure. All you need to
trigger corruptions in paired pages is to interrupt the program
operation in the middle, and this can be done by simply sending a reset
command while it's taking place (I tested that method, and if I reset
the chip after tPROG / 2 it always corrupts both paired pages).

> 
> I think that I (as DAVE) can provide this kind of hardware, with an easy 
> plug-in connector on our hostboard (if those are the one that Richard 
> speak about).
> Please let me know if you're interesting in it, if so I'll forward this 
> request to our hardware guys and give you an official confirm.
> 
> While running this kind  of test, I would also increase CPU load, to 
> reduce bypass capacitor intrusion (which may lead to wrong result in a 
> generic case)

Of course, real world tests are welcome, but I don't think we can rely
on them while developing the solution.
Anyway, thanks for the proposition.

Best Regards,

Boris


[1]http://code.bulix.org/73xjfn-88945

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

  reply	other threads:[~2015-09-18  7:42 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-17 13:22 UBI/UBIFS: dealing with MLC's paired pages Boris Brezillon
2015-09-17 15:20 ` Artem Bityutskiy
2015-09-17 15:46   ` Boris Brezillon
2015-09-17 16:47     ` Richard Weinberger
2015-09-18  7:17       ` Andrea Scian
2015-09-18  7:41         ` Boris Brezillon [this message]
2015-09-18  7:54         ` Artem Bityutskiy
2015-09-18  7:57           ` Bityutskiy, Artem
2015-09-18  9:38           ` Andrea Scian
2015-09-24  1:57             ` Karl Zhang 张双锣 (karlzhang)
2015-09-24  6:31               ` Richard Weinberger
2015-09-24  7:43               ` Boris Brezillon
2015-09-24  9:44                 ` Stefan Roese
2015-09-29 11:19 ` Richard Weinberger
2015-09-29 12:51   ` Boris Brezillon
2015-10-23  8:14 ` Boris Brezillon
2015-10-27 20:16   ` Richard Weinberger
2015-10-28  9:24     ` Boris Brezillon
2015-10-28 10:44       ` Michal Suchanek
2015-10-28 11:14         ` Boris Brezillon
2015-10-28 15:50           ` Michal Suchanek
2015-10-28 12:24   ` Artem Bityutskiy
2015-10-30  8:15     ` Boris Brezillon
2015-10-30  8:21       ` Boris Brezillon
2015-10-30  8:50       ` Bean Huo 霍斌斌 (beanhuo)
2015-10-30  9:08       ` Artem Bityutskiy
2015-10-30  9:45         ` Boris Brezillon
2015-10-30 10:09           ` Artem Bityutskiy
2015-10-30 11:49             ` Michal Suchanek
2015-10-30 12:47               ` Artem Bityutskiy
2015-10-30 11:43           ` Artem Bityutskiy
2015-10-30 11:59             ` Richard Weinberger
2015-10-30 12:29               ` Artem Bityutskiy
2015-10-30 12:31                 ` Bityutskiy, Artem
2015-10-30 12:30             ` Boris Brezillon
2015-10-30 12:41               ` Artem Bityutskiy
2015-10-28 12:06 ` Artem Bityutskiy
     [not found] <A765B125120D1346A63912DDE6D8B6310BF4CAA8@NTXXIAMBX02.xacn.micron.com>
2015-09-25  7:30 ` Boris Brezillon
2015-09-25  8:25   ` Bean Huo 霍斌斌 (beanhuo)
2015-09-25  8:35     ` Richard Weinberger
2015-09-25  8:48     ` Boris Brezillon
2015-09-25  8:30   ` Karl Zhang 张双锣 (karlzhang)
2015-09-25  8:56     ` Boris Brezillon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150918094136.57178319@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=Iwo.Mergler@netcommwireless.com \
    --cc=computersforpeace@gmail.com \
    --cc=dedekind1@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=jlauruhn@micron.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=qiwang@micron.com \
    --cc=richard@nod.at \
    --cc=rnd4@dave-tech.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox