mbox series

[0/3] mtd: fix AMD/Intel flash bugs

Message ID 20180301133941.19660-1-joakim.tjernlund@infinera.com
Headers show
Series mtd: fix AMD/Intel flash bugs | expand

Message

Joakim Tjernlund March 1, 2018, 1:39 p.m. UTC
This fixes a bug which allows read/write to a erase block currently
erasing.
Also works around a chip bug in Micron 28F00AP30 chips.

Joakim Tjernlund (3):
  cfi_cmdset_0001: Do not allow read/write to suspend erase block.
  cfi_cmdset_0001: Workaround Micron Erase suspend bug.
  cfi_cmdset_0002: Do not allow read/write to suspend erase block.

 drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
 drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
 include/linux/mtd/flashchip.h       |  1 +
 3 files changed, 35 insertions(+), 8 deletions(-)

Comments

Joakim Tjernlund March 11, 2018, 4:06 p.m. UTC | #1
On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
> This fixes a bug which allows read/write to a erase block currently
> erasing.
> Also works around a chip bug in Micron 28F00AP30 chips.
> 
> Joakim Tjernlund (3):
>   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
>   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
>   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> 
>  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
>  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
>  include/linux/mtd/flashchip.h       |  1 +
>  3 files changed, 35 insertions(+), 8 deletions(-)
> 

Ping?
This is a fairly serious bug as it confuses the flash state machine,
making further flash access fail.

 Jocke
Andrea Adami March 12, 2018, 9:09 a.m. UTC | #2
On Sun, Mar 11, 2018 at 5:06 PM, Joakim Tjernlund
<Joakim.Tjernlund@infinera.com> wrote:
> On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
>> This fixes a bug which allows read/write to a erase block currently
>> erasing.
>> Also works around a chip bug in Micron 28F00AP30 chips.
>>
>> Joakim Tjernlund (3):
>>   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
>>   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
>>   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
>>
>>  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
>>  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
>>  include/linux/mtd/flashchip.h       |  1 +
>>  3 files changed, 35 insertions(+), 8 deletions(-)
>>
>
> Ping?
> This is a fairly serious bug as it confuses the flash state machine,
> making further flash access fail.
>

Hello,

I don't undertsand exactly from the titles what is happening.
Do you want to disable erase and wite suspend like in this other 2016
patch found around?

https://patchwork.kernel.org/patch/9380029/

See, I am user of the Sharp LH28F640BF NOR, very similar to the Intel
Startaflash, 4-Plane Page Mode Dual Work.
On these chips erase suspend works just fine.
What has been disabled is dual work: simultaneous read-while-erase and
read-while-program because there has never been real support for
n-planes in kernel.

What is exactly the issue?
Regards
Andrea

>  Jocke
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
Joakim Tjernlund March 12, 2018, 11:11 a.m. UTC | #3
On Mon, 2018-03-12 at 10:09 +0100, Andrea Adami wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> On Sun, Mar 11, 2018 at 5:06 PM, Joakim Tjernlund
> <Joakim.Tjernlund@infinera.com> wrote:
> > On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
> > > This fixes a bug which allows read/write to a erase block currently
> > > erasing.
> > > Also works around a chip bug in Micron 28F00AP30 chips.
> > > 
> > > Joakim Tjernlund (3):
> > >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> > >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> > >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > > 
> > >  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
> > >  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
> > >  include/linux/mtd/flashchip.h       |  1 +
> > >  3 files changed, 35 insertions(+), 8 deletions(-)
> > > 
> > 
> > Ping?
> > This is a fairly serious bug as it confuses the flash state machine,
> > making further flash access fail.
> > 
> 
> Hello,
> 
> I don't undertsand exactly from the titles what is happening.
> Do you want to disable erase and wite suspend like in this other 2016
> patch found around?

Not quite, the first part is about preventing read/write to a block that is
being erased. This can happen if two apps opens the same /dev/mtd device.

Then there is a bug fix for erase suspend not working in the smaller boot block
sections, that part is similar to the patch you reference but much less invasive

> https://patchwork.kernel.org/patch/9380029/
> 
> See, I am user of the Sharp LH28F640BF NOR, very similar to the Intel
> Startaflash, 4-Plane Page Mode Dual Work.
> On these chips erase suspend works just fine.
> What has been disabled is dual work: simultaneous read-while-erase and
> read-while-program because there has never been real support for
> n-planes in kernel.
> 
> What is exactly the issue?
> Regards
> Andrea
> 
> >  Jocke
> > ______________________________________________________
> > Linux MTD discussion mailing list
> > http://lists.infradead.org/mailman/listinfo/linux-mtd/
Boris Brezillon March 15, 2018, 3:54 p.m. UTC | #4
On Sun, 11 Mar 2018 16:06:03 +0000
Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote:

> On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
> > This fixes a bug which allows read/write to a erase block currently
> > erasing.
> > Also works around a chip bug in Micron 28F00AP30 chips.
> > 
> > Joakim Tjernlund (3):
> >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > 
> >  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
> >  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
> >  include/linux/mtd/flashchip.h       |  1 +
> >  3 files changed, 35 insertions(+), 8 deletions(-)
> >   
> 
> Ping?

You didn't Cc the MTD maintainers, so that's not surprising you don't
get a reply from us :P.

> This is a fairly serious bug as it confuses the flash state machine,
> making further flash access fail.

I'll try to have a look.

> 
>  Jocke
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
Joakim Tjernlund March 15, 2018, 5:55 p.m. UTC | #5
On Thu, 2018-03-15 at 16:54 +0100, Boris Brezillon wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> 
> On Sun, 11 Mar 2018 16:06:03 +0000
> Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote:
> 
> > On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
> > > This fixes a bug which allows read/write to a erase block currently
> > > erasing.
> > > Also works around a chip bug in Micron 28F00AP30 chips.
> > > 
> > > Joakim Tjernlund (3):
> > >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> > >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> > >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > > 
> > >  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
> > >  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
> > >  include/linux/mtd/flashchip.h       |  1 +
> > >  3 files changed, 35 insertions(+), 8 deletions(-)
> > > 
> > 
> > Ping?
> 
> You didn't Cc the MTD maintainers, so that's not surprising you don't
> get a reply from us :P.

I find it more surprising that the MTD maintainers doesn't read the MTD list ? I figured
this was a requirement.

> 
> > This is a fairly serious bug as it confuses the flash state machine,
> > making further flash access fail.
> 
> I'll try to have a look.

Thanks
Boris Brezillon March 15, 2018, 6:02 p.m. UTC | #6
On Thu, 15 Mar 2018 17:55:57 +0000
Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote:

> On Thu, 2018-03-15 at 16:54 +0100, Boris Brezillon wrote:
> > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > 
> > 
> > On Sun, 11 Mar 2018 16:06:03 +0000
> > Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote:
> >   
> > > On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:  
> > > > This fixes a bug which allows read/write to a erase block currently
> > > > erasing.
> > > > Also works around a chip bug in Micron 28F00AP30 chips.
> > > > 
> > > > Joakim Tjernlund (3):
> > > >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> > > >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> > > >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > > > 
> > > >  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
> > > >  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
> > > >  include/linux/mtd/flashchip.h       |  1 +
> > > >  3 files changed, 35 insertions(+), 8 deletions(-)
> > > >   
> > > 
> > > Ping?  
> > 
> > You didn't Cc the MTD maintainers, so that's not surprising you don't
> > get a reply from us :P.  
> 
> I find it more surprising that the MTD maintainers doesn't read the MTD list ?

I do read the ML occasionally, though I tend to rely on what's in my
inbox, so there might be a bigger latency if you don't Cc me. I guess
the process differ for each maintainer, but it's a good practice to Cc
maintainers when you send a patch.

> I figured this was a requirement.
> 
> >   
> > > This is a fairly serious bug as it confuses the flash state machine,
> > > making further flash access fail.  
> > 
> > I'll try to have a look.  
> 
> Thanks
Joakim Tjernlund April 4, 2018, 8:27 p.m. UTC | #7
On Thu, 2018-03-15 at 18:55 +0100, Joakim Tjernlund wrote:
> On Thu, 2018-03-15 at 16:54 +0100, Boris Brezillon wrote:
> > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > 
> > 
> > On Sun, 11 Mar 2018 16:06:03 +0000
> > Joakim Tjernlund <Joakim.Tjernlund@infinera.com> wrote:
> > 
> > > On Thu, 2018-03-01 at 14:39 +0100, Joakim Tjernlund wrote:
> > > > This fixes a bug which allows read/write to a erase block currently
> > > > erasing.
> > > > Also works around a chip bug in Micron 28F00AP30 chips.
> > > > 
> > > > Joakim Tjernlund (3):
> > > >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> > > >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> > > >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > > > 
> > > >  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
> > > >  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
> > > >  include/linux/mtd/flashchip.h       |  1 +
> > > >  3 files changed, 35 insertions(+), 8 deletions(-)
> > > > 
> > > 
> > > Ping?
> > 
> > You didn't Cc the MTD maintainers, so that's not surprising you don't
> > get a reply from us :P.
> 
> I find it more surprising that the MTD maintainers doesn't read the MTD list ? I figured
> this was a requirement.
> 
> > 
> > > This is a fairly serious bug as it confuses the flash state machine,
> > > making further flash access fail.
> > 
> > I'll try to have a look.
> 
> Thanks

Ping?
Boris Brezillon April 20, 2018, 7:05 p.m. UTC | #8
On Thu,  1 Mar 2018 14:39:38 +0100
Joakim Tjernlund <joakim.tjernlund@infinera.com> wrote:

> This fixes a bug which allows read/write to a erase block currently
> erasing.
> Also works around a chip bug in Micron 28F00AP30 chips.
> 
> Joakim Tjernlund (3):
>   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
>   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
>   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> 

All these patches have a Cc-stable tag but no Fixes tag. Can you add
a proper Fixes to each of them?

>  drivers/mtd/chips/cfi_cmdset_0001.c | 33 ++++++++++++++++++++++++++++-----
>  drivers/mtd/chips/cfi_cmdset_0002.c |  9 ++++++---
>  include/linux/mtd/flashchip.h       |  1 +
>  3 files changed, 35 insertions(+), 8 deletions(-)
>
Joakim Tjernlund April 21, 2018, 12:47 p.m. UTC | #9
On Fri, 2018-04-20 at 21:05 +0200, Boris Brezillon wrote:
> 
> On Thu,  1 Mar 2018 14:39:38 +0100
> Joakim Tjernlund <joakim.tjernlund@infinera.com> wrote:
> 
> > This fixes a bug which allows read/write to a erase block currently
> > erasing.
> > Also works around a chip bug in Micron 28F00AP30 chips.
> > 
> > Joakim Tjernlund (3):
> >   cfi_cmdset_0001: Do not allow read/write to suspend erase block.
> >   cfi_cmdset_0001: Workaround Micron Erase suspend bug.
> >   cfi_cmdset_0002: Do not allow read/write to suspend erase block.
> > 
> 
> All these patches have a Cc-stable tag but no Fixes tag. Can you add
> a proper Fixes to each of them?

I don't think I can, the code is ancient in this area.