From: Ivan Djelic <ivan.djelic@parrot.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: "linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
Ricard Wanderlof <ricard.wanderlof@axis.com>,
Matthieu Castet <matthieu.castet@parrot.com>,
Artem Bityutskiy <dedekind1@gmail.com>
Subject: Re: dangerous NAND_BBT_SCANBYTE1AND6
Date: Wed, 25 May 2011 18:41:07 +0200 [thread overview]
Message-ID: <20110525164107.GA16801@parrot.com> (raw)
In-Reply-To: <BANLkTik218nb1bnFL03UA3WYwh+=BQAXCA@mail.gmail.com>
On Tue, May 24, 2011 at 02:09:10AM +0100, Brian Norris wrote:
> >>> So I bet
> >>> your device is actually an x8 device and so the 1st/6th byte pattern is
> >>> correct. I think the fact that this conflicts with your ECC patterns is
> >>> something you must deal with.
> >>
> >> I don't agree, that's a big mtd regression. If you update your kernel on such
> >> flash, you brick it.
> >
> > I agree, even if the behavior may have been incorrect in the past, we should think very carefully about changing this for exactly this reason.
>
> Right, I see how this could be a problem. So for a resolution, I'd ask
> for suggestions on which of the following seems best:
> 1) Completely revert the SCANBYTE1AND6 change
> 2) Remove the option from nand_get_flash_type(), still allowing
> drivers to enable the scan option themselves
> 3) Have nand_get_flash_type() use ECC layout information to decide to
> scan bytes 1+6 or just byte 1 only
>
> Regarding correctness:
> As far as I can tell, no one has found a definitive answer on the
> manufacturer intention, right? I'm now leaning toward the intention
> that software only needs to scan *either* byte 1 *or* byte 6, but I
> don't know for sure.
Hello Brian,
Here is a relevant excerpt from a 2004 STM application note (AN1819):
RECOGNIZING BAD BLOCKS
The devices are supplied with all the locations inside valid blocks
erased (FFh). The Bad Block Information is written prior to shipping.
For 528 Byte/256 Word Page (NANDxxx-A) devices, any block where the
6th Byte/ 1st Word in the spare area of the 1st page does not contain
FFh is a Bad Block. For 2112 Byte/1056 Word Page devices, any block,
where the 1st and 6th Bytes, or 1st Word, in the spare area of the 1st
page, does not contain FFh, is a Bad Block.
If we check only the 1st byte, we just need to make sure that there is no
possibility of having a good erased block with:
- 1st byte == bad block marker (usually 0x00)
and
- 6th byte == 0xff
I believe this is unlikely; or rather, it _was_ totally unlikely in 2004 when
the application note was written.
Therefore, I think we can safely use only the 1st marker byte to detect factory
bad blocks in that case (STM large page); the manufacturer simply guarantees
that both markers are written when a factory bad block is marked. It does not
require you to check both bytes.
<digression>
The above note is probably not applicable to recent devices. Because bitflips
are much more likely to appear, saying that a specific byte marks a bad block
if it "does not contain FFh" it not realistic. ONFI 2.2 clarifies the issue and
states that a marker is 0x00, not just a byte that "does not contain FFh".
And recent Micron devices do not store markers in flash; they just return 0x00
for any byte read in a bad block (instead of the real data), using an internal
bad block table.
</digression>
I suggest we revert the SCANBYTE1AND6 change, because:
- it breaks existing ecc layouts
- factory bad blocks in relevant STM nands can be detected without checking the
6th byte
Best Regards,
Ivan
next prev parent reply other threads:[~2011-05-25 16:41 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-21 15:52 dangerous NAND_BBT_SCANBYTE1AND6 Matthieu CASTET
2011-04-21 17:10 ` Ivan Djelic
2011-04-22 4:50 ` Brian Norris
2011-04-22 8:23 ` Artem Bityutskiy
2011-04-22 8:53 ` Matthieu CASTET
2011-04-22 9:28 ` Artem Bityutskiy
2011-04-21 17:33 ` Brian Norris
2011-04-22 9:02 ` Matthieu CASTET
2011-04-26 7:30 ` Ricard Wanderlof
2011-05-24 1:09 ` Brian Norris
2011-05-25 16:41 ` Ivan Djelic [this message]
2011-05-25 18:04 ` Atlant Schmidt
2011-05-25 18:31 ` Ivan Djelic
2011-05-26 7:09 ` Ricard Wanderlof
2011-05-26 7:58 ` Ivan Djelic
2011-05-26 7:07 ` Ricard Wanderlof
2011-05-26 7: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=20110525164107.GA16801@parrot.com \
--to=ivan.djelic@parrot.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=matthieu.castet@parrot.com \
--cc=ricard.wanderlof@axis.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 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).