linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: ivan.djelic@parrot.com (Ivan Djelic)
To: linux-arm-kernel@lists.infradead.org
Subject: GPMI-NAND Status?
Date: Mon, 15 Aug 2011 10:29:35 +0200	[thread overview]
Message-ID: <20110815082935.GA18364@parrot.com> (raw)
In-Reply-To: <20040.45443.810005.525431@ipc1.ka-ro>

On Mon, Aug 15, 2011 at 06:41:23AM +0100, Lothar Wa?mann wrote:
> Hi,
> 
> Ivan Djelic writes:
> > On Fri, Aug 05, 2011 at 02:51:33PM +0100, Wolfram Sang wrote:
> > (...)
> > > 
> > > problem overwriting all-0xff data in NAND [2]
> > > =============================================
> > > 
> > > Although it occured only when writing JFFS2 images so far, this is a generic
> > > issue and needs to be fixed, right?
> > > 
> > > 
> > (...)
> > > [2] http://lists.infradead.org/pipermail/linux-mtd/2011-July/037104.html
> > 
> > As explained in the thread linked above, this issue should be fixed in your
> > flashing tool, _not_ in your driver. The nand device you are using does not
> > support programming pages multiple times in a row; pretending it does in the
> >
> It's not a problem of the device (Samsung K9F1G08U0B in my case)! The
> problem is that the controller generates an ECC code that is non-FF
> for all-FF data, which JFFS2 cannot handle properly.

JFFS2 has nothing to do with it. JFFS2 does not assume it can program empty
pages and then reprogram them on a NAND flash device. You flashing method does.

If your BCH controller allows it, you could XOR the computed ECC bytes with a
specific mask to make sure all-FF data have all-FF ecc. This is useful to allow
reading erased blocks with ecc correction enabled.

But even so, you cannot work around the fact that NAND devices are different
from NOR devices, in that they typically allow only a limited number of partial
page programming operations (4 in your K9F1G08U0B).
If you implemented the mask trick described above and used it to allow
multiple page programming, you still would not track the number of partial
program operations on a given page, and expose yourself to nasty bugs (when
exceeding the number of specified partial operations); i.e. it could work on
some devices for a few operations, but not reliably on all devices for any
number of empty page programmings.

So the only real possibility is to avoid programming (physically) a page when
its target contents are empty (all-FF); this is not implemented at the driver
level because:
- it is useless: none of the existing filesystems need this "feature"
- it would waste cpu cycles to check if target data is all-FF each time a page
is programmed

Therefore... it is simply a matter of avoiding empty page programming, which
only happens in your flasher. See also the flashing guidelines [1] as per Artem
suggestion.

BR,

Ivan

[1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo

> 
> 
> Lothar Wa?mann
> -- 
> ___________________________________________________________
> 
> Ka-Ro electronics GmbH | Pascalstra?e 22 | D - 52076 Aachen
> Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
> Gesch?ftsf?hrer: Matthias Kaussen
> Handelsregistereintrag: Amtsgericht Aachen, HRB 4996
> 
> www.karo-electronics.de | info at karo-electronics.de
> ___________________________________________________________

  parent reply	other threads:[~2011-08-15  8:29 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-05 13:51 GPMI-NAND Status? Wolfram Sang
2011-08-08  6:21 ` Huang Shijie
2011-08-08  9:19   ` Koen Beel
2011-08-08 10:37     ` Huang Shijie
2011-08-08 12:42       ` Koen Beel
2011-08-09  6:36         ` Huang Shijie
2011-08-09  7:58           ` Koen Beel
2011-08-09  8:18             ` Huang Shijie
2011-08-09  8:25               ` Koen Beel
2011-08-09  5:11     ` Huang Shijie
2011-08-09  6:25       ` Koen Beel
2011-08-09  6:40         ` Huang Shijie
2011-08-09  9:45     ` Wolfram Sang
2011-08-09  9:35   ` Wolfram Sang
2011-08-09 10:54     ` Huang Shijie
2011-08-09 20:42       ` Wolfram Sang
2011-08-08  9:12 ` Huang Shijie
2011-08-09  9:19   ` Wolfram Sang
2011-08-09 10:41     ` Huang Shijie
2011-08-09 11:36       ` Lothar Waßmann
2011-08-14  8:11 ` Ivan Djelic
2011-08-14 18:31   ` Wolfram Sang
2011-08-15  5:41   ` Lothar Waßmann
2011-08-15  6:30     ` Lin Tony-B19295
2011-08-15  8:41       ` Ivan Djelic
2011-08-15  8:29     ` Ivan Djelic [this message]
2011-08-15  9:31       ` Lothar Waßmann
2011-08-15 12:54         ` Ivan Djelic
2011-08-15 13:37           ` Lothar Waßmann
2011-08-15 16:34         ` Artem Bityutskiy
2011-08-15 16:18     ` Artem Bityutskiy
2011-08-15 16:22   ` Artem Bityutskiy
2011-08-15 16:57     ` Ivan Djelic

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=20110815082935.GA18364@parrot.com \
    --to=ivan.djelic@parrot.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).