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
next prev parent 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