From: Holger Brunck <holger.brunck@keymile.com>
To: linux-mtd@lists.infradead.org
Cc: "Walter, Axel" <Axel.Walter@keymile.com>,
Detlev Zundel <dzu@denx.de>,
dedekind1@gmail.com
Subject: UBI: corrupted PEB detection for Numonyx P30
Date: Mon, 24 Jan 2011 14:12:21 +0100 [thread overview]
Message-ID: <4D3D7AB5.50401@keymile.com> (raw)
Hi all,
we have on a powerpc based board with a new Numonyx P30 65nm 1GBit flash an
error seen on the PEB detection of UBI.
If we do a power cut on the board we get an similar situation as on Spansion
S29GL512N. After a reboot the eraseblock is unwriteable and we can not
invalidate the VID and EC header. In u-boot the area looks like:
=> md 0x56180000
56180000: 00000000 00000000 00000000 00000000 ................
56180010: 00000000 00000000 00000000 00000000 ................
56180020: ffffffff ffffffff ffffffff ffffffff ................
56180030: ffffffff ffffffff ffffffff ffffffff ................
56180040: ffffffff ffffffff ffffffff ffffffff ................
56180050: ffffffff ffffffff ffffffff ffffffff ................
During bootime we hit the checks for valid VID and EC header in nor_erase_prepare:
err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0);
err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0);
Both functions were only checked for (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 ==
UBI_IO_BAD_HDR). But in our case we have a VID header with all FFs and the
return code is UBI_IO_FF. So I think it must be checked also for UBI_IO_FF and
UBI_IO_FF_BITFLIPS.
The following patch seems to solve our problem:
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c
index 811775a..407aa46 100644
--- a/drivers/mtd/ubi/io.c
+++ b/drivers/mtd/ubi/io.c
@@ -507,11 +507,13 @@ static int nor_erase_prepare(struct ubi_device *ubi, int pnum)
* PEB.
*/
err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0);
- if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) {
+ if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR ||
+ err1 == UBI_IO_FF || err1 == UBI_IO_FF_BITFLIPS) {
struct ubi_ec_hdr ec_hdr;
err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0);
- if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR)
+ if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR ||
+ err1 == UBI_IO_FF || err1 == UBI_IO_FF_BITFLIPS) {
/*
* Both VID and EC headers are corrupted, so we can
* safely erase this PEB and not afraid that it will be
Does anyone see a problem with this patch? If not I can post it as a git patch
on the mailing list.
Best regards
Holger Brunck
next reply other threads:[~2011-01-24 13:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-24 13:12 Holger Brunck [this message]
2011-01-25 11:11 ` UBI: corrupted PEB detection for Numonyx P30 Artem Bityutskiy
2011-01-25 11:31 ` Holger Brunck
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=4D3D7AB5.50401@keymile.com \
--to=holger.brunck@keymile.com \
--cc=Axel.Walter@keymile.com \
--cc=dedekind1@gmail.com \
--cc=dzu@denx.de \
--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.