[PATCH] mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times

Tim Harvey tharvey at gateworks.com
Fri Oct 21 17:37:42 PDT 2022


On Fri, Oct 21, 2022 at 2:55 PM Tim Harvey <tharvey at gateworks.com> wrote:
>
> On Fri, Sep 2, 2022 at 12:03 AM Miquel Raynal <miquel.raynal at bootlin.com> wrote:
> >
> > Hey folks,
> >
> > richard at nod.at wrote on Fri, 15 Jul 2022 09:59:10 +0200 (CEST):
> >
> > > ----- Ursprüngliche Mail -----
> > > >> My IRC history doesn't go back far enough, but if I recall correctly
> > > >> Miquel is on vacation, he would have picked up this patch for linux-next
> > > >> otherwise.
> > >
> > > Exactly.
> >
> > Indeed, I was off for an extended period of time, I'm (very) slowly
> > catching up now.
> >
> > >
> > > > Ok, let me do a round of stable releases so that people don't get hit by
> > > > this now...
> > >
> > > Thanks a lot for doing so.
> > >
> > > > Hopefully this gets fixed up by 5.19-final.
> > >
> > > Sure, I'll pickup this patch.
> >
> > Thanks Greg & Richard for the handling of this issue.
> >
> > Cheers,
> > Miquèl
> >
>
> Hello All,
>
> As Tomasz stated previously 06781a5026350 was merged in v5.19-rc4 and
> then was picked up by several stable kernels. While this made it into
> the 5.15 and 5.18 stable branches it did not make it into the
> following which are thus the are currently broken:
> 5.10.y
> 5.17.y
>
> How do we get this patch applied to those stable branches as well to
> resolve this?
>
> Best regards,
>

Some more details here as I also find that stable 5.4 is broken as
well 5.10 and 5.17:

The issue I see here is on a Gateworks imx6q-gw54xx board with a 2GiB
Cypress NAND part
[    2.703324] nand: device found, Manufacturer ID: 0x01, Chip ID: 0xd5
[    2.709815] nand: AMD/Spansion S34ML16G2
[    2.713758] nand: 2048 MiB, SLC, erase size: 128 KiB, page size:
2048, OOB size: 128
[    2.721990] Scanning device for bad blocks
[    2.727025] Bad eraseblock 0 at 0x000000000000
[    2.731628] Bad eraseblock 1 at 0x000000020000
[    2.736191] Bad eraseblock 2 at 0x000000040000
...

The original regression was from commit d99e7feaed4c: ("mtd: rawnand:
gpmi: fix controller timings setting") which was fixed by commit
156427b3123c ("mtd: rawnand: gpmi: Fix setting busy timeout setting")
but later deemed to be an invalid fix so that got reverted (thus
breaking things again) and fixed instead with commit 0fddf9ad06fd
("mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on
program/erase times") which did not make it into all the stable
branches that had the original commit or the revert of the potential
fix.

Here is history of each stable branch affected as best I can tell
(I've actually built/booted all of these trying to understand this so
fixed/broken refers to the issue I see above):

v5.4:
 - v5.4.189 broken with commit 0d0ee651e72c: ("mtd: rawnand: gpmi: fix
controller timings setting")
 - v5.4.202 fixed with commit 71c76f56b97c: ("mtd: rawnand: gpmi: Fix
setting busy timeout setting")
 - v5.4.206 broken with commit 15a3adfe7593: ("Revert "mtd: rawnand:
gpmi: Fix setting busy timeout setting"")
 *** still broken as of v5.4.219 but can be fixed by commit
0fddf9ad06fd ("mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on
program/erase times")

v5.10:
 - v5.10.110 broken with commit d99e7feaed4c: ("mtd: rawnand: gpmi:
fix controller timings setting")
 - v5.10.127 fixed with commit 156427b3123c ("mtd: rawnand: gpmi: Fix
setting busy timeout setting")
 - v5.10.131 broken with commit cc5ee0e0eed0 Revert "mtd: rawnand:
gpmi: Fix setting busy timeout setting"
 *** still broken as of v5.10.149 but can be fixed by commit
0fddf9ad06fd ("mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on
program/erase times")

v5.15:
 - v5.15.33 broken with commit 8480efe815e5: ("mtd: rawnand: gpmi: fix
controller timings setting")
 - v5.15.51 fixed with commit 0af674e7a764: ("mtd: rawnand: gpmi: Fix
setting busy timeout setting")
 - v5.15.55 broken with commit c80b15105a08 ("Revert "mtd: rawnand:
gpmi: Fix setting busy timeout setting"")
 - v5.15.58 fixed with commit 212a5360ef40 ("mtd: rawnand: gpmi: Set
WAIT_FOR_READY timeout based on program/erase times")

v5.17:
 - v5.17.2 broken with commit 4b2eed1d1ee8 ("mtd: rawnand: gpmi: fix
controller timings setting")
 *** still broken as of v5.17.15 but can be fixed by commit
0fddf9ad06fd ("mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on
program/erase times")

v5.18:
 - v5.18-rc2 broken with commit 2970bf5a32f0 mtd: rawnand: gpmi: fix
controller timings setting
 - v5.18.8 fixed with commit 8d45b05f7eaf: ("mtd: rawnand: gpmi: Fix
setting busy timeout setting")
 - v5.18.12 broken with commit f8d01e0f004a: ("Revert "mtd: rawnand:
gpmi: Fix setting busy timeout setting"")
 - v5.18.15 fixed with commit c283223e769d: ("mtd: rawnand: gpmi: Set
WAIT_FOR_READY timeout based on program/erase times")

v5.19:
- v5.19-rc3 broken by commit 06781a502635: ("mtd: rawnand: gpmi: Fix
setting busy timeout setting")
- v5.19-rc7 fixed by commit 0fddf9ad06fd: ("mtd: rawnand: gpmi: Set
WAIT_FOR_READY timeout based on program/erase times")

Best Regards,

Tim



More information about the linux-mtd mailing list