[PATCH] mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times
Tomasz Moń
tomasz.mon at camlingroup.com
Thu Jul 14 22:27:02 PDT 2022
On Mon, 2022-07-11 at 11:12 +0200, Tomasz Moń wrote:
> On Fri, 2022-07-01 at 13:03 +0200, Sascha Hauer wrote:
> > 06781a5026350 Fixes the calculation of the DEVICE_BUSY_TIMEOUT register
> > value from busy_timeout_cycles. busy_timeout_cycles is calculated wrong
> > though: It is calculated based on the maximum page read time, but the
> > timeout is also used for page write and block erase operations which
> > require orders of magnitude bigger timeouts.
> >
> > Fix this by calculating busy_timeout_cycles from the maximum of
> > tBERS_max and tPROG_max.
>
> 06781a5026350 was merged in v5.19-rc4 and then was picked up by several
> stable kernels, including v5.15.51. After we have upgraded to v5.15.51
> we have observed the issue that Sascha mentioned in his email [1].
>
> As the v5.19-rc6 was released yesterday and this fix is still not
> applied, the v5.19-rc6 (and all stable kernels that picked up the
> backport) causes NAND flash data loss on imx targets.
>
> I have backported this patch to our internal v5.15.51 based kernel on
> 4th July 2022 and I can confirm that it does indeed solve the NAND data
> loss on imx targets.
>
> Is it possible for this patch to make it to the v5.19-rc7?
No response, so sending the email to more people so the voice is heard.
Sorry if this is not the proper way, but I think the issue is serious.
Current prepatch kernels starting with v5.19-rc4 and stable kernels
starting with v5.4.202. v5.10.127, v5.15.51, v5.18.8 contain a
"[PATCH] [REALLY REALLY BROKEN] mtd: rawnand: gpmi: Fix setting busy timeout setting"
that is wreaking havoc to i.MX[678] or i.MX28 devices with NAND
"** THIS PATCH WILL CAUSE DATA LOSS ON YOUR NAND!! **" [1]
The solution is to either:
* Revert 06781a5026350 ("mtd: rawnand: gpmi: Fix setting busy timeout
setting") and all its cherry-picks to stable branches, *OR*
* Apply the fix ("mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout
based on program/erase times") [2]
Please do whatever you see fit.
Best Regards,
Tomasz Moń
[1] https://lore.kernel.org/linux-mtd/20220701091909.GE2387@pengutronix.de/
[2] https://lore.kernel.org/linux-mtd/20220701110341.3094023-1-s.hauer@pengutronix.de/
More information about the linux-mtd
mailing list