From: Artem Bityutskiy <dedekind1@gmail.com>
To: Huang Shijie <b32955@freescale.com>
Cc: linux-mtd@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
"Shawn Guo" <shawn.guo@freescale.com>,
"Lothar Waßmann" <LW@KARO-electronics.de>
Subject: Re: [i.MX28 GPMI] problem overwriting all-0xff data in NAND
Date: Wed, 20 Jul 2011 11:35:43 +0300 [thread overview]
Message-ID: <1311150947.20738.167.camel@sauron> (raw)
In-Reply-To: <4E26794D.8040004@freescale.com>
On Wed, 2011-07-20 at 14:44 +0800, Huang Shijie wrote:
> Hi Lothar:
> > On Mon, Jul 18, 2011 at 03:13:27PM +0200, Lothar Waßmann wrote:
> >> Hi,
> >>
> >> with the gpmi-nfc driver for imx28 from Shawn Guo on a TX28 I
> > To be clear, the author of gpmi-nfc driver is Huang Shijie (Cc-ed).
> >
> > Regards,
> > Shawn
> >
> >> encountered some problems with jffs2 when overwriting pages that have
> >> been written with 0xff (e.g. from padding from the file system image
> >> file).
> >>
> >> The problem is that the ECC info for an all-0xff block is not all-0xff
> >> and thus a newly erased block is different from a block that has been
> >> written with 0xff.
> >> If such a block is being altered (jffs2 thinking it can simply
> >> overwrite it without erasing first) the ECC information will be
> >> corrupted and will produce ECC errors upon read.
> >>
> >> The only remedy I can think of is to prevent empty pages from actually
> >> being written to flash, but leaving them in the erased state instead.
> Did you mean that:
> If the gpmi have to write a page which is full of 0xff,
> the gpmi driver should skip the writting, and leave the page in the
> erased state.
>
> Am I right?
Please, no! The driver should just write what it is asked to write. Your
driver has a limitation - a NAND page can be written only _once_. If a
piece of software writes a page twice (1st with all 0xFFs, then with
something else) - this is a problem in _that piece of software_.
Additionally, all 0xFFs are just data, it needs ECC corrections in case
of bit-flips just like any other data. Eve you decided to do that
horrible "skip all 0xFFs" hack, you'd need to make sure bit-flips in
"skipped" pages are still corrected. Indeed, there is not reason why a
never written NAND page would not have bit-flips.
--
Best Regards,
Artem Bityutskiy
WARNING: multiple messages have this Message-ID (diff)
From: dedekind1@gmail.com (Artem Bityutskiy)
To: linux-arm-kernel@lists.infradead.org
Subject: [i.MX28 GPMI] problem overwriting all-0xff data in NAND
Date: Wed, 20 Jul 2011 11:35:43 +0300 [thread overview]
Message-ID: <1311150947.20738.167.camel@sauron> (raw)
In-Reply-To: <4E26794D.8040004@freescale.com>
On Wed, 2011-07-20 at 14:44 +0800, Huang Shijie wrote:
> Hi Lothar:
> > On Mon, Jul 18, 2011 at 03:13:27PM +0200, Lothar Wa?mann wrote:
> >> Hi,
> >>
> >> with the gpmi-nfc driver for imx28 from Shawn Guo on a TX28 I
> > To be clear, the author of gpmi-nfc driver is Huang Shijie (Cc-ed).
> >
> > Regards,
> > Shawn
> >
> >> encountered some problems with jffs2 when overwriting pages that have
> >> been written with 0xff (e.g. from padding from the file system image
> >> file).
> >>
> >> The problem is that the ECC info for an all-0xff block is not all-0xff
> >> and thus a newly erased block is different from a block that has been
> >> written with 0xff.
> >> If such a block is being altered (jffs2 thinking it can simply
> >> overwrite it without erasing first) the ECC information will be
> >> corrupted and will produce ECC errors upon read.
> >>
> >> The only remedy I can think of is to prevent empty pages from actually
> >> being written to flash, but leaving them in the erased state instead.
> Did you mean that:
> If the gpmi have to write a page which is full of 0xff,
> the gpmi driver should skip the writting, and leave the page in the
> erased state.
>
> Am I right?
Please, no! The driver should just write what it is asked to write. Your
driver has a limitation - a NAND page can be written only _once_. If a
piece of software writes a page twice (1st with all 0xFFs, then with
something else) - this is a problem in _that piece of software_.
Additionally, all 0xFFs are just data, it needs ECC corrections in case
of bit-flips just like any other data. Eve you decided to do that
horrible "skip all 0xFFs" hack, you'd need to make sure bit-flips in
"skipped" pages are still corrected. Indeed, there is not reason why a
never written NAND page would not have bit-flips.
--
Best Regards,
Artem Bityutskiy
next prev parent reply other threads:[~2011-07-20 8:35 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-18 13:13 [i.MX28 GPMI] problem overwriting all-0xff data in NAND Lothar Waßmann
2011-07-18 13:13 ` Lothar Waßmann
2011-07-18 14:56 ` Ivan Djelic
2011-07-18 14:56 ` Ivan Djelic
2011-07-19 5:59 ` Lothar Waßmann
2011-07-19 5:59 ` Lothar Waßmann
2011-07-19 6:48 ` Ivan Djelic
2011-07-19 6:48 ` Ivan Djelic
2011-07-18 16:43 ` Shawn Guo
2011-07-18 16:43 ` Shawn Guo
2011-07-19 2:12 ` Huang Shijie
2011-07-19 2:12 ` Huang Shijie
2011-07-19 6:02 ` Lothar Waßmann
2011-07-19 6:02 ` Lothar Waßmann
2011-07-19 7:03 ` Huang Shijie
2011-07-19 7:03 ` Huang Shijie
2011-07-19 9:55 ` Lothar Waßmann
2011-07-19 9:55 ` Lothar Waßmann
2011-07-19 13:36 ` Wolfram Sang
2011-07-19 13:36 ` Wolfram Sang
2011-07-20 2:18 ` Huang Shijie
2011-07-20 2:18 ` Huang Shijie
2011-07-20 8:51 ` Wolfram Sang
2011-07-20 8:51 ` Wolfram Sang
2011-07-20 10:34 ` Huang Shijie
2011-07-20 4:55 ` Huang Shijie
2011-07-20 4:55 ` Huang Shijie
2011-07-20 6:22 ` Lothar Waßmann
2011-07-20 6:22 ` Lothar Waßmann
2011-07-20 5:16 ` Artem Bityutskiy
2011-07-20 5:16 ` Artem Bityutskiy
2011-07-20 5:19 ` Artem Bityutskiy
2011-07-20 5:19 ` Artem Bityutskiy
2011-07-19 6:00 ` Lothar Waßmann
2011-07-19 6:00 ` Lothar Waßmann
2011-07-20 6:44 ` Huang Shijie
2011-07-20 6:44 ` Huang Shijie
2011-07-20 8:10 ` Lothar Waßmann
2011-07-20 8:10 ` Lothar Waßmann
2011-07-20 8:35 ` Artem Bityutskiy [this message]
2011-07-20 8:35 ` Artem Bityutskiy
2011-07-20 5:12 ` Artem Bityutskiy
2011-07-20 5:12 ` 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=1311150947.20738.167.camel@sauron \
--to=dedekind1@gmail.com \
--cc=LW@KARO-electronics.de \
--cc=b32955@freescale.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=shawn.guo@freescale.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.