From: Romain Izard <romain.izard.pro@gmail.com>
To: linux-mtd@lists.infradead.org
Subject: Re: Page corruption when writing non-sequential pages in an MLC NAND eraseblock
Date: Wed, 2 Oct 2013 10:18:31 +0000 (UTC) [thread overview]
Message-ID: <l2grtn$svg$1@ger.gmane.org> (raw)
In-Reply-To: CAHqTa-0d=U+W2nju8WeCJ=gL+ja8DVuK0BUquajOL6qXV5C0+g@mail.gmail.com
On 2013-10-01, Avery Pennarun <apenwarr@gmail.com> wrote:
> Hi everyone,
>
> Does this sound familiar?
>
> Setup:
> - Linux 2.6.37 or 3.2.26 (apologies for the old versions, but I
> couldn't find any related patches in newer kernels and these are
> embedded systems that are a bit hard to upgrade)
> - Micron MT29F16G08CBACAWP - MLC NAND
> - 1 Mbyte eraseblocks
> - 1 kbyte pages
> - Tested on two different hardware platforms (MIPS and ARM devices)
>
> Steps:
> - Disable ECC to avoid any confusion (ECC turns out to not affect the
> test results, but I wanted to make sure)
> - Erase any eraseblock
> - Write all-zeroes to page 0x18 of that eraseblock; read it back -> ok
> - Write all-zeroes to page 0x12 of that eraseblock; read it back ->
> FAIL, all 0xff instead
> - Read page 0x18 -> completely random data (about 12% of bits are flipped)
>
> More details:
> - It doesn't happen with a related Micron SLC NAND
> - If you write the pages in the opposite order there is no problem
> - Delays before/after reading and writing, and the sequence of reads,
> has no effect
> - This turns out to happen for any pair of pages, where pairs are
> always exactly 6 pages apart (n and n+6), other than the first and
> last 4 pages in each eraseblock, which are paired with different pages
> to make the math work out
>
> I've read about the concept of MLC "paired pages" causing corruption
> elsewhere, but it supposedly only happens when you get a power
> failure. It's happening for me during normal runtime, which seems
> wrong.
For me you're violating one key MLC assumption: the pages within a block
must be written in a strictly increasing order. It should be written
somewhere in the component's datasheet.
Best regards,
--
Romain Izard
next prev parent reply other threads:[~2013-10-02 10:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-01 23:01 Page corruption when writing non-sequential pages in an MLC NAND eraseblock Avery Pennarun
2013-10-02 7:58 ` Ricard Wanderlof
2013-10-02 19:05 ` Avery Pennarun
2013-10-02 10:18 ` Romain Izard [this message]
2013-10-02 18:09 ` Avery Pennarun
2013-10-03 7:40 ` Ricard Wanderlof
2013-10-03 7:44 ` Avery Pennarun
2013-10-03 8:14 ` Romain Izard
2013-10-03 15:26 ` Ricard Wanderlof
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='l2grtn$svg$1@ger.gmane.org' \
--to=romain.izard.pro@gmail.com \
--cc=linux-mtd@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 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.