From: Ivan Djelic <ivan.djelic@parrot.com>
To: Mike Dunn <mikedunn@newsguy.com>
Cc: Artem Bityutskiy <dedekind1@gmail.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Matthieu Castet <matthieu.castet@parrot.com>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
Shmulik Ladkani <shmulik.ladkani@gmail.com>,
Brian Norris <computersforpeace@gmail.com>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH 8/8] mtd: nand: use ECC, if present, when scanning OOB
Date: Mon, 16 Jul 2012 23:34:02 +0200 [thread overview]
Message-ID: <20120716213402.GB10244@parrot.com> (raw)
In-Reply-To: <50045F48.6050702@newsguy.com>
On Mon, Jul 16, 2012 at 08:36:56PM +0200, Mike Dunn wrote:
> Hi Ivan, thanks again for the comments.
>
> On 07/16/2012 07:01 AM, Ivan Djelic wrote:
> > On Sun, Jul 15, 2012 at 10:01:24PM +0200, Mike Dunn wrote:
> >
> >> Yeah, this is a strong argument for ecc on oob-only reads.
> >
> > Hello Mike,
> >
> > I think it is a strong argument for a robust reading of BBM, rather than an argument
> > for ECC on OOB-only reads. By "robust reading", I mean simply looking at the Hamming weight of the
> > marker (the number of 1s in the BBM) rather than its value, as done in nand_block_bad() by setting chip->badblockbits.
> >
> > This robust reading is trivially implemented, does not depend on OOB ecc availability,
> > and benefits all drivers. Even if your driver implements OOB ECC, it may not work
> > on an erased block with a bitflip in its BBM (because erased data may not have a valid
> > ECC).
>
>
> This is a certainty, no? Erased, by definition, includes any ecc bytes.
If you add the right polynomial[1] to your Hamming or BCH code, then you can make
sure the ECC of an erased page (possibly with OOB bytes) is actually a sequence of 0xff bytes.
This trick enables bitflip correction on data that has never been programmed.
Take a look at nand_ecc.c:63 (or nand_bch.c:62) for an example.
This trick is not possible on all hardware ECC engines.
>
> > Moreover, reading just the OOB region with ECC may require a full page read on some drivers
> > (when OOB and data are parts of the same codeword).
> >
> > To me, the only strong reason for wanting OOB ECC is the implementation of YAFFS2 or similar filesystems
> > which require OOB metadata protection. But maybe I'm missing some other use cases ?
> >
> > What do you think ?
>
>
> If we assume the oob bytes on the first page of a good block can contain
> anything, won't simply counting the bits make the risk of falsly identifying a
> bb marker unacceptably high?
Counting bits on a BBM marker byte basically gives a 4-bitflip protection on a _single_ byte, which is
*extremely* unlikely. If you assume an erased good block can contain garbage in its OOB region, then
it can indeed be wrongly identified as a bad block; but this is also true if you use OOB ECC
(e.g. exceeding correction capacity).
In practice, since the bad block marker byte is normally never programmed to anything other than 0xff,
there is no reason why we should find garbage in it (even if a power failure occurs during an
erase/program operation).
BR,
--
Ivan
[1] this polynomial is simply the inverted ecc of an erased ecc block
next prev parent reply other threads:[~2012-07-16 21:34 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-22 23:35 [PATCH 0/8] NAND and NAND-BBT improvements Brian Norris
2012-06-22 23:35 ` [PATCH 1/8] mtd: move mtd_read_oob() definition out of mtd.h Brian Norris
2012-06-22 23:35 ` [PATCH 2/8] mtd: check for max_bitflips in mtd_read_oob() Brian Norris
2012-06-26 12:11 ` Shmulik Ladkani
2012-06-26 18:23 ` Mike Dunn
2012-07-11 2:12 ` Brian Norris
2012-08-15 11:24 ` Artem Bityutskiy
2012-08-15 19:15 ` Brian Norris
2012-08-16 10:48 ` Artem Bityutskiy
2012-08-17 22:58 ` Brian Norris
2012-06-22 23:35 ` [PATCH 3/8] mtd: nand: rename "no_bbt" descriptors to "no_oob" Brian Norris
2012-06-22 23:35 ` [PATCH 4/8] mtd: nand: remove unused 'int' return codes Brian Norris
2012-06-26 12:29 ` Shmulik Ladkani
2012-06-26 14:18 ` [PATCH 4/8] mtd: nand: remove unused 'int' return codes (SPAM) William F.
2012-08-15 11:40 ` [PATCH 4/8] mtd: nand: remove unused 'int' return codes Artem Bityutskiy
2012-06-22 23:35 ` [PATCH 5/8] mtd: nand: rename '_raw' BBT scan functions Brian Norris
2012-06-26 12:39 ` Shmulik Ladkani
2012-07-10 2:13 ` Brian Norris
2012-08-15 12:35 ` Artem Bityutskiy
2012-06-22 23:35 ` [PATCH 6/8] mtd: nand_bbt: refactor check_pattern_no_oob() Brian Norris
2012-06-22 23:35 ` [PATCH 7/8] mtd: nand_bbt: use string library Brian Norris
2012-06-26 13:37 ` Shmulik Ladkani
2012-07-16 6:06 ` Brian Norris
2012-07-16 23:57 ` Ivan Djelic
2012-08-15 11:53 ` Artem Bityutskiy
2012-06-22 23:35 ` [PATCH 8/8] mtd: nand: use ECC, if present, when scanning OOB Brian Norris
2012-06-26 14:09 ` Shmulik Ladkani
2012-07-10 2:39 ` Brian Norris
2012-07-10 7:45 ` Matthieu CASTET
2012-07-13 17:39 ` Brian Norris
2012-07-15 20:01 ` Mike Dunn
2012-07-16 14:01 ` Ivan Djelic
2012-07-16 18:36 ` Mike Dunn
2012-07-16 21:34 ` Ivan Djelic [this message]
2012-07-17 18:10 ` Mike Dunn
2013-11-07 14:56 ` Angus Clark
2013-11-18 18:36 ` Brian Norris
2012-08-15 12:05 ` Artem Bityutskiy
2012-08-15 14:31 ` Shmulik Ladkani
2012-08-16 10:40 ` Artem Bityutskiy
2012-08-20 13:12 ` Shmulik Ladkani
2012-06-27 13:52 ` [PATCH 0/8] NAND and NAND-BBT improvements Artem Bityutskiy
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=20120716213402.GB10244@parrot.com \
--to=ivan.djelic@parrot.com \
--cc=bigeasy@linutronix.de \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=matthieu.castet@parrot.com \
--cc=mikedunn@newsguy.com \
--cc=shmulik.ladkani@gmail.com \
/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.