[U-Boot] PATCH: bugfix for nand erase failure with bad blocks

Scott Wood
2009-06-16T20:19:19Z

Wolfgang Denk wrote:
> Dear "Michele De Candia (VT)",
>
> In message <4A37F7BF.2090101@valueteam.com> you wrote:
>>>> this patch fixes a bug for 'nand erase' command: when bad blocks are
>>>> present into erasing area, they were skipped but the erased size was
>>>> updated anyway.
>>> And what exactly is the bug in this behaviour?
>>>
>> I think that 'erase' should have the same behaviour of 'write' and
>> 'read' commands: skip bad blocks until read/write size is reached. If
>> you write a script that erases and then writes a NAND area and bad
>> blocks are not skipped while erasing (as U-Boot actually does), the
>> following 'write' is successfully done but ECC checks fail on next read
>> on the same area.
>
> I see - thanks for the explanation.
>
> Hm... actually I think the write should fail in such a case...
>
> Scott, what do you think?

I think the current behavior is reasonable. You're erasing a specific
region of flash, not an amount needed to hold a certain amount of data.

While I can see the appeal of Michele's suggestion, I think it would be
more error-prone as people trying to erase a region rather than just the
size of data could erase too much.

It definitely should not be an error to erase a region that happens to
contain a bad block. Bad blocks are expected and we need to work around
them.

-Scott