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

Scott Wood scottwood at freescale.com
Tue Jun 16 22:19:19 CEST 2009


Wolfgang Denk wrote:
> Dear "Michele De Candia (VT)",
> 
> In message <4A37F7BF.2090101 at 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


More information about the U-Boot mailing list