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

Michele De Candia (VT) michele.decandia at valueteam.com
Wed Jun 17 09:44:41 CEST 2009


Michele De Candia (VT) wrote:
> Scott Wood wrote:
>   
>> 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.
>>
>>     
>  From this point of view you're in the right; maybe this would be 
> explained in 'README.nand' documentation or what do you think about add 
> ing an option to 'nand erase' command to consider 'size' field as the 
> effective blocks size to be erased and not as the area size?
>   
Moreover, I think that if you want to erase a specific NAND area, the 
correct way to use 'nand erase' command would be:

'nand erase start end'

If you want to erase  an area but you want to be sure that 'size' bytes 
were erased, you should use:

'nand erase off size'

In this case a bad block should be skipped and next block will be erased.

Obviously this behavior must be implemented.

What do you think about it?

>> 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