cfi_cmdset_0001.c: Excessive erase suspends

Jared Hulbert jaredeh at gmail.com
Fri Apr 18 22:47:48 EDT 2008


> > A solution might be an small delay before a
> > write suspends the erase.
> >
>
>  udelay(100) right before the suspend command seems to work for me.
>  It reduces the suspend count to about 1700 and no errors reported
>  by JFFS2.

good.

Not sure how/if that sort of fix can be merged.

So you didn't see this kind of problem with older kernels?

>  I ran this routine in a standalone test program from u-boot:
>
>  void test_flash_erase_suspend(void)
>  {
>  }
>
>  The delay loop doing 3500 loops seems to be the critical one.

Interesting.  I'm going to talk with some people...

>  Most of the time I get something like this, which I assume
>  means 'Operation abort'.
>
>  Status 00a000a0

Yes, bit 5 is erase error.  You've got to expect data to be bad under
those circumstances.

>  Status 00a00080
>  aa690000

you have 2 parts in parallel, right?  So the chip on the high order
word is expected to be garbage, erase error and all.  But the lower
word chip confuses me, that shouldn't happen.

Alexey, what do you think?



More information about the linux-mtd mailing list