[PATCH] mtd: cfi: Wait for Block Erase operation to finish
lost.distance at yahoo.com
Fri Mar 2 09:06:33 EST 2012
--- On Fri, 2/3/12, Joakim Tjernlund <joakim.tjernlund at transmode.se> wrote:
> > > > 2. If SR.6=0 then the erase has already
> completed, and
> > > there is no need to set chip->erase_suspended
> > > subsequently issue an Erase Resume command.
> > >
> > > Wont work when you have interleaved chips, there
> one chip
> > > may complete and the other not.
> > OK, I see, I think: one chip might have finished
> erasing by the time we
> > issue an Erase Suspend, but the other might not. Yikes,
> they don't make it
> > easy for us.
Thinking about this more, it shouldn't matter if not all interleaved chips
have completed their erase. We should initiate Erase Resume to *all* chips
if we find that *any* chips have suspended. The worse that happens is that
we issue unnecessary resumes to those chips which have already completed.
Since this is what the current MTD driver already does it shouldn't be a
> > > Just wait for SR.6 to clear might work.
> > That is what my 2nd patch does. Should I just submit
> that as V2?
> Not sure yet, you would have add tmo support though and
> were to change state/oldstate as the loop drop the lock.
> > > Perhaps adding 1 or 2 extra throw away status
> reads to
> > > create a small delay instead?
> > How much delay is enough for which platform and which
> chips? I would
> > prefer just waiting for SR.6 to clear if that works.
> The problem is very rare, the other case I mentioned is the
> only one I know of.
> I seem to recall that in that case adding a throwaway status
> read cured his problem.
> You could try, just so we known if it works and mail the
> other guy too, he might have
> some more info.
The problem only became a problem for me after I switched from JFFS2 to
UBIFS. I found that UBIFS would make file systems read-only. Either JFFS2
was more forgiving of CFI errors, or UBIFS exercised CFI in new ways that
provoked the errors. As others switch from JFFS2 to UBIFS they too might
find the same problem.
More information about the linux-mtd