[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AM6PR04MB49671F2AA5E38B5C69602ACD976E0@AM6PR04MB4967.eurprd04.prod.outlook.com>
Date: Tue, 5 Feb 2019 16:28:36 +0000
From: Han Xu <han.xu@....com>
To: Martin Kepplinger <martin.kepplinger@...zinger.com>,
"bbrezillon@...nel.org" <bbrezillon@...nel.org>,
"miquel.raynal@...tlin.com" <miquel.raynal@...tlin.com>,
"richard@....at" <richard@....at>,
"dwmw2@...radead.org" <dwmw2@...radead.org>,
"computersforpeace@...il.com" <computersforpeace@...il.com>,
"marek.vasut@...il.com" <marek.vasut@...il.com>,
"linux-mtd@...ts.infradead.org" <linux-mtd@...ts.infradead.org>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"stable@...r.kernel.org" <stable@...r.kernel.org>,
Manfred Schlaegl <manfred.schlaegl@...zinger.com>,
Fabio Estevam <festevam@...il.com>
Subject: RE: [PATCH v2] mtd: rawnand: gpmi: fix MX28 bus master lockup problem
> -----Original Message-----
> From: Martin Kepplinger <martin.kepplinger@...zinger.com>
> Sent: Tuesday, February 5, 2019 9:53 AM
> To: Han Xu <han.xu@....com>; bbrezillon@...nel.org;
> miquel.raynal@...tlin.com; richard@....at; dwmw2@...radead.org;
> computersforpeace@...il.com; marek.vasut@...il.com; linux-
> mtd@...ts.infradead.org
> Cc: linux-kernel@...r.kernel.org; stable@...r.kernel.org; Manfred Schlaegl
> <manfred.schlaegl@...zinger.com>; Fabio Estevam <festevam@...il.com>
> Subject: [PATCH v2] mtd: rawnand: gpmi: fix MX28 bus master lockup
> problem
>
> Disable BCH soft reset according to MX23 erratum #2847 ("BCH soft
> reset may cause bus master lock up") for MX28 too. It has the same
> problem.
>
> Observed problem: once per 100,000+ MX28 reboots NAND read failed on
> DMA timeout errors:
> [ 1.770823] UBI: attaching mtd3 to ubi0
> [ 2.768088] gpmi_nand: DMA timeout, last DMA :1
> [ 3.958087] gpmi_nand: BCH timeout, last DMA :1
> [ 4.156033] gpmi_nand: Error in ECC-based read: -110
> [ 4.161136] UBI warning: ubi_io_read: error -110 while reading 64
> bytes from PEB 0:0, read only 0 bytes, retry
> [ 4.171283] step 1 error
> [ 4.173846] gpmi_nand: Chip: 0, Error -1
>
> Without BCH soft reset we successfully executed 1,000,000 MX28 reboots.
>
> I have a quote from NXP regarding this problem, from July 18th 2016:
>
> "As the i.MX23 and i.MX28 are of the same generation, they share many
> characteristics. Unfortunately, also the erratas may be shared.
> In case of the documented erratas and the workarounds, you can also
> apply the workaround solution of one device on the other one. This have
> been reported, but I’m afraid that there are not an estimated date for
> updating the Errata documents.
> Please accept our apologies for any inconveniences this may cause."
>
> Fixes: 6f2a6a52560a ("mtd: nand: gpmi: reset BCH earlier, too, to avoid
> NAND startup problems")
> Cc: stable@...r.kernel.org
> Signed-off-by: Manfred Schlaegl <manfred.schlaegl@...zinger.com>
> Signed-off-by: Martin Kepplinger <martin.kepplinger@...zinger.com>
> Reviewed-by: Miquel Raynal <miquel.raynal@...tlin.com>
> Reviewed-by: Fabio Estevam <festevam@...il.com>
Acked-by: Han Xu <han.xu@....com>
> ---
>
>
> revision history
> ----------------
> v2: add Fixes tag, Cc stable and add recent Reviewed-by tags
>
>
> drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c
> b/drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c
> index bd4cfac6b5aa..a4768df5083f 100644
> --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c
> +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c
> @@ -155,9 +155,10 @@ int gpmi_init(struct gpmi_nand_data *this)
>
> /*
> * Reset BCH here, too. We got failures otherwise :(
> - * See later BCH reset for explanation of MX23 handling
> + * See later BCH reset for explanation of MX23 and MX28 handling
> */
> - ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this));
> + ret = gpmi_reset_block(r->bch_regs,
> + GPMI_IS_MX23(this) || GPMI_IS_MX28(this));
> if (ret)
> goto err_out;
>
> @@ -263,12 +264,10 @@ int bch_set_geometry(struct gpmi_nand_data
> *this)
> /*
> * Due to erratum #2847 of the MX23, the BCH cannot be soft reset on
> this
> * chip, otherwise it will lock up. So we skip resetting BCH on the
> MX23.
> - * On the other hand, the MX28 needs the reset, because one case
> has been
> - * seen where the BCH produced ECC errors constantly after 10000
> - * consecutive reboots. The latter case has not been seen on the
> MX23
> - * yet, still we don't know if it could happen there as well.
> + * and MX28.
> */
> - ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this));
> + ret = gpmi_reset_block(r->bch_regs,
> + GPMI_IS_MX23(this) || GPMI_IS_MX28(this));
> if (ret)
> goto err_out;
>
> --
> 2.20.1
Powered by blists - more mailing lists