All of lore.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.