Re: [PATCH v1] mtd: rawnand: micron: don't error out if internal ECC is set

From: Marco Felsch
Date: Fri Jan 17 2020 - 02:10:47 EST


Hi Zak, Miquel,

On 20-01-16 19:22, Miquel Raynal wrote:
> Hi Zak,
>
> zdhays@xxxxxxxxx wrote on Fri, 10 Jan 2020 11:25:01 -0500:
>
> > From: Zak Hays <zdhays@xxxxxxxxx>
> >
> > Recent changes to the driver require use of on-die correction if
> > the internal ECC enable bit is set. On some Micron parts, this bit
> > is enabled by default and there is no method for disabling it.

Which changes did you mean here?

> > This is a false assumption though as that bit being enabled does not
> > necessarily mean that the on-die ECC *has* to be used. It has been
> > verified with a Micron FAE that other methods of error correction are
> > still valid even if this bit is set.

It would be cool if a micron FAE can provide a document with all the
quirks and how those quirks can be handled.

> > HW ECC offers generally higher performance than on-die so it is
> > preferred in some situations. This also allows multiple NAND parts to
> > be supported on the same PCB as some parts may not support on-die
> > error correction.

By HW ECC you mean the host ecc controller?

> > With that in mind, only throw a warning that the on-die bit is set
> > and allow the init to continue.
>
> I don't think I can take this patch as-is. We must find a reliable way
> to discriminate Micron parts features. If we cannot (I think we can't
> before of the endless list of bugs they have introduced without
> documenting them), the best way is to build a static table.

+1 for 'find a reliable way to discriminate Micron parts features'

Regards,
Marco

> >
> > Signed-off-by: Zak Hays <zdhays@xxxxxxxxx>
> > ---
> > drivers/mtd/nand/raw/nand_micron.c | 4 +---
> > 1 file changed, 1 insertion(+), 3 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/raw/nand_micron.c b/drivers/mtd/nand/raw/nand_micron.c
> > index 56654030ec7f..ec40c76443be 100644
> > --- a/drivers/mtd/nand/raw/nand_micron.c
> > +++ b/drivers/mtd/nand/raw/nand_micron.c
> > @@ -455,9 +455,7 @@ static int micron_nand_init(struct nand_chip *chip)
> >
> > if (ondie == MICRON_ON_DIE_MANDATORY &&
> > chip->ecc.mode != NAND_ECC_ON_DIE) {
> > - pr_err("On-die ECC forcefully enabled, not supported\n");
> > - ret = -EINVAL;
> > - goto err_free_manuf_data;
> > + pr_warn("WARNING: On-die ECC forcefully enabled, use caution with other methods\n");
> > }
> >
> > if (chip->ecc.mode == NAND_ECC_ON_DIE) {
>
> Thanks,
> Miquèl
>

--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |