From: Pavel Machek <pavel@ucw.cz>
To: Boris Brezillon <boris.brezillon@free-electrons.com>
Cc: richard@nod.at, dwmw2@infradead.org, computersforpeace@gmail.com,
marek.vasut@gmail.com, cyrille.pitchen@atmel.com,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
mark.marshall@omicronenergy.com, b44839@freescale.com,
prabhakar@freescale.com
Subject: Re: [PATCH] fsl_ifc_nand: fix handing of bit flips in erased nand
Date: Wed, 17 May 2017 15:00:59 +0200 [thread overview]
Message-ID: <20170517130059.GA3437@amd> (raw)
In-Reply-To: <20170517143211.205ff5de@bbrezillon>
[-- Attachment #1: Type: text/plain, Size: 2689 bytes --]
Hi!
> On Wed, 17 May 2017 14:22:24 +0200
> Pavel Machek <pavel@ucw.cz> wrote:
>
> > If we see unrecoverable ECC error, we need to count number of bitflips
> > from all-ones and report correctable/uncorrectable according to
> > that. Otherwise we report ECC failed on erased flash with single bit error.
> >
> > Signed-off-by: Pavel Machek <pavel@denx.de>
> >
> > @@ -678,6 +648,41 @@ static int fsl_ifc_wait(struct mtd_info *mtd, struct nand_chip *chip)
> > return nand_fsr | NAND_STATUS_WP;
> > }
> >
> > +/*
> > + * The controller does not check for bitflips in erased pages,
> > + * therefore software must check instead.
> > + */
> > +static int check_erased_page(struct nand_chip *chip, u8 *buf)
> > +{
> > + struct mtd_info *mtd = nand_to_mtd(chip);
> > + u8 *ecc = chip->oob_poi;
> > + const int ecc_size = chip->ecc.bytes;
> > + const int pkt_size = chip->ecc.size;
> > + int i, res, bitflips = 0;
> > + struct mtd_oob_region oobregion = { };
> > +
> > + mtd_ooblayout_ecc(mtd, 0, &oobregion);
> > + ecc += oobregion.offset;
> > +
> > + for (i = 0; i < chip->ecc.steps; ++i) {
> > + res = nand_check_erased_ecc_chunk(buf, pkt_size, ecc, ecc_size,
> > + NULL, 0,
> > + chip->ecc.strength);
> > + if (res < 0)
> > + mtd->ecc_stats.failed++;
> > + else
> > + mtd->ecc_stats.corrected += res;
> > +
> > + bitflips = max(res, bitflips);
> > + buf += pkt_size;
> > + ecc += ecc_size;
> > + }
> > +
> > + mtd_ooblayout_ecc(mtd, 1, &oobregion);
>
> Why is this needed?
It is not, will remove.
> > @@ -904,6 +922,21 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
> > chip->ecc.algo = NAND_ECC_HAMMING;
> > }
> >
> > + {
> > + struct mtd_oob_region oobregion = { };
> > +
> > + mtd_ooblayout_ecc(mtd, 0, &oobregion);
> > + if (!oobregion.length) {
> > + dev_err(priv->dev, "No ECC in oobregion?\n");
> > + return -EINVAL;
> > + }
> > + mtd_ooblayout_ecc(mtd, 1, &oobregion);
> > + if (oobregion.length) {
> > + dev_err(priv->dev, "Extra data in oobregion?\n");
> > + return -EINVAL;
> > + }
> > + }
>
> This clearly doesn't belong in this patch. And if you really want to
> check that, please create a separate function instead of defining a
> non-conditional code block inside fsl_ifc_chip_init().
I am not sure I want to check that. check_erased_page() can only
handle layout with just one oobregion. If you think check is not
needed, I'll happily remove the checking.
Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2017-05-17 13:01 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-19 12:13 fsl_ifc_nand: are blank pages protected by ECC? Pavel Machek
2017-04-19 21:18 ` Boris Brezillon
2017-04-19 22:15 ` Pavel Machek
2017-04-19 22:27 ` Boris Brezillon
2017-04-20 11:40 ` Pavel Machek
2017-04-20 12:15 ` Boris Brezillon
2017-04-21 10:51 ` [PATCH] nand_base: optimize checking of erased buffers Pavel Machek
2017-05-17 11:27 ` Mason
2017-05-17 11:39 ` Mason
2017-05-17 11:52 ` Pavel Machek
2017-05-17 12:22 ` [PATCH] fsl_ifc_nand: fix handing of bit flips in erased nand Pavel Machek
2017-05-17 12:32 ` Boris Brezillon
2017-05-17 13:00 ` Pavel Machek [this message]
2017-05-17 13:25 ` Boris Brezillon
2017-05-17 20:03 ` [PATCH] mtd: nand: fsl_ifc: fix handing of bit flips in erased pages Pavel Machek
2017-05-31 20:59 ` [PATCHv2] " Pavel Machek
2017-05-31 22:59 ` Darwin Dingel
2017-06-01 1:09 ` Darwin Dingel
2017-06-01 13:12 ` Pavel Machek
2017-06-01 13:21 ` Boris Brezillon
2017-06-07 7:31 ` Boris Brezillon
2017-04-21 10:08 ` fsl_ifc_nand: are blank pages protected by ECC? Pavel Machek
2017-04-21 10:12 ` Richard Weinberger
2017-04-21 12:04 ` Boris Brezillon
2017-04-21 13:37 ` Pavel Machek
2017-04-21 13:49 ` Boris Brezillon
2017-04-22 7:01 ` Pavel Machek
2017-04-22 10:40 ` [PATCH] tango_nand.c: fix ecc.stats_corrected in empty flash case Pavel Machek
2017-04-24 8:58 ` Marc Gonzalez
2017-04-24 9:03 ` Pavel Machek
2017-05-02 9:42 ` Boris Brezillon
2017-05-02 11:52 ` Marc Gonzalez
2017-05-02 12:20 ` Boris Brezillon
2017-05-03 20:02 ` Pavel Machek
2017-05-03 20:04 ` Pavel Machek
2017-05-04 8:42 ` Boris Brezillon
2017-05-12 15:34 ` [PATCH] mtd: nand: tango: Update ecc_stats.corrected Marc Gonzalez
2017-05-15 8:56 ` Boris Brezillon
2017-05-15 20:47 ` Boris Brezillon
2017-05-17 12:04 ` [PATCH] tango_nand.c: fix ecc.stats_corrected in empty flash case Pavel Machek
2017-04-23 9:58 ` tango_nand: is logic right in error cases? (was Re: fsl_ifc_nand: are blank pages protected by ECC?) Pavel Machek
2017-04-24 7:12 ` 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=20170517130059.GA3437@amd \
--to=pavel@ucw.cz \
--cc=b44839@freescale.com \
--cc=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@atmel.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=mark.marshall@omicronenergy.com \
--cc=prabhakar@freescale.com \
--cc=richard@nod.at \
/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.