From: Brian Norris <computersforpeace@gmail.com>
To: Jonas Gorski <jogo@openwrt.org>
Cc: Simon Arlott <simon@fire.lp0.eu>,
Florian Fainelli <f.fainelli@gmail.com>,
Kamal Dasu <kdasu.kdev@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
MTD Maling List <linux-mtd@lists.infradead.org>,
bcm-kernel-feedback-list <bcm-kernel-feedback-list@broadcom.com>,
David Woodhouse <dwmw2@infradead.org>,
Boris Brezillon <boris.brezillon@free-electrons.com>
Subject: Re: [PATCH] mtd: brcmnand: Workaround false ECC uncorrectable errors
Date: Wed, 2 Dec 2015 12:54:15 -0800 [thread overview]
Message-ID: <20151202205415.GQ64635@google.com> (raw)
In-Reply-To: <CAOiHx=mLmEW=gK_HE6oVqaFZjMUAWoP1PxZchc_mC_A5PJn-Cw@mail.gmail.com>
Hi,
On Wed, Dec 02, 2015 at 09:44:04PM +0100, Jonas Gorski wrote:
> On Wed, Dec 2, 2015 at 9:17 PM, Simon Arlott <simon@fire.lp0.eu> wrote:
> > On 01/12/15 10:41, Jonas Gorski wrote:
> >> On Sat, Nov 28, 2015 at 8:23 PM, Simon Arlott <simon@fire.lp0.eu> wrote:
> >>> +
> >>> + /* Go to start of buffer */
> >>> + buf -= FC_WORDS;
> >>> +
> >>> + /* Erased if all data bytes are 0xFF */
> >>> + buf_erased = memchr_inv(buf, 0xFF, FC_WORDS) == NULL;
> >>> +
> >>> + if (!buf_erased)
> >>> + goto out_free;
> >>
> >> We now have a function exactly for that use case in 4.4,
> >> nand_check_erased_buf [1], consider using that. This also has the
> >> benefit of treating bit flips as correctable as long as the ECC scheme
> >> is strong enough.
> >
> > I have no idea whether or not it's appropriate to specify
> > bitflips_threshold > 0 so it'd just be a more complex way to do
> > a memchr_inv() search for 0xFF.
>
> The threshold would be the amount of bitflips the code can correct, so
> basically ecc.strength (at least that is my understanding).
>
> > The code also has to check for the hamming code bytes being all 0x00,
> > because according to the comments [2], the controller also has
> > difficulty with the non-erased all-0xFFs scenario too.
>
> According to brcmnand.c hamming can fix up to fifteen bitflips, but in
Hamming only protects 1 bitflip. The '15' is the value used by the
controller to represent Hamming (i.e., there is no BCH-15).
> the current code you would fail a hamming protected all-0xff-page for
> even a single bitflip in the data or in the ecc bytes, which means
> that all-0xff-pages wouldn't be protected at all.
BTW, I think Kamal had code to handle protecting bitflips in erased
pages code in the Broadcom STB Linux BSP. Perhaps he can port that to
upstream with nand_check_erased_ecc_chunk()? IIUC, that would probably
handle your case too, Simon, although it wouldn't be optimal for an
all-0xff check (i.e., bitflip_threshold == 0).
If that's really an issue (i.e., we have an implementation + data), I'm
sure we could add optimization to nand_check_erased_ecc_chunk() to
support the bitflip_threshold == 0 case.
Brian
next prev parent reply other threads:[~2015-12-02 20:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-28 19:23 [PATCH] mtd: brcmnand: Workaround false ECC uncorrectable errors Simon Arlott
2015-12-01 10:41 ` Jonas Gorski
2015-12-02 20:17 ` Simon Arlott
2015-12-02 20:44 ` Jonas Gorski
2015-12-02 20:54 ` Brian Norris [this message]
2015-12-02 21:06 ` Brian Norris
2015-12-02 21:08 ` Jonas Gorski
2015-12-02 21:29 ` Simon Arlott
2015-12-02 22:22 ` Brian Norris
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=20151202205415.GQ64635@google.com \
--to=computersforpeace@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=boris.brezillon@free-electrons.com \
--cc=dwmw2@infradead.org \
--cc=f.fainelli@gmail.com \
--cc=jogo@openwrt.org \
--cc=kdasu.kdev@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=simon@fire.lp0.eu \
/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.