All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
@ 2009-06-16 13:06 Michele De Candia
  2009-06-16 18:10 ` Wolfgang Denk
  0 siblings, 1 reply; 16+ messages in thread
From: Michele De Candia @ 2009-06-16 13:06 UTC (permalink / raw)
  To: u-boot

Hi all,
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.

Regards,
Michele Jr De Candia


-------------- next part --------------
A non-text attachment was scrubbed...
Name: nand_erase_count_bad_blocks.patch
Type: text/x-patch
Size: 1247 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090616/969c408f/attachment.bin 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 13:06 [U-Boot] PATCH: bugfix for nand erase failure with bad blocks Michele De Candia
@ 2009-06-16 18:10 ` Wolfgang Denk
  2009-06-16 19:51   ` Michele De Candia
  0 siblings, 1 reply; 16+ messages in thread
From: Wolfgang Denk @ 2009-06-16 18:10 UTC (permalink / raw)
  To: u-boot

Dear "Michele De Candia (VT)",

In message <4A3798C4.8000303@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?

Given the fact that you don't  know  the  number  of  bad  blocks  in
advance, what do you use as reference for 100% in your display, then?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Life. Don't talk to me about life.      - Marvin the Paranoid Android

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 18:10 ` Wolfgang Denk
@ 2009-06-16 19:51   ` Michele De Candia
  2009-06-16 20:09     ` Wolfgang Denk
  0 siblings, 1 reply; 16+ messages in thread
From: Michele De Candia @ 2009-06-16 19:51 UTC (permalink / raw)
  To: u-boot

Wolfgang Denk wrote:
> Dear "Michele De Candia (VT)",
>
> In message <4A3798C4.8000303@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.
> Given the fact that you don't  know  the  number  of  bad  blocks  in
> advance, what do you use as reference for 100% in your display, then?
>   
I used the size passed by the user from command line as target and the 
actual erased size as reference while erasing blocks and skipping bad ones.
> Best regards,
>
> Wolfgang Denk
>
>   


-- 

*Michele Jr **De Candia*

------------------------------------------------------------------------

Value Team

Via Vespri Siciliani, 9
20146 Milano
Tel. +39 0248985722
michele.decandia at valueteam.com <mailto:michele.decandia@valueteam.com>
http://www.valueteam.com

 

CONFIDENTIALITY NOTICE -This message and its attachments (if any) may 
contain confidential, proprietary or legally privileged information and 
is intended only for the use of the addressee named above. No 
confidentiality or privilege is waived or lost by any mistransmission. 
If you are not the intended recipient of this message you are hereby 
notified that you must not use, disseminate, copy it in any form or take 
any action in reliance on it. If you have received this message in error 
please delete it and any copies of it and kindly inform the sender of 
this e-mail by replying or go to www.valueteam.com 
<http://www.valueteam.com> on 'contacts'.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 19:51   ` Michele De Candia
@ 2009-06-16 20:09     ` Wolfgang Denk
  2009-06-16 20:19       ` Scott Wood
  0 siblings, 1 reply; 16+ messages in thread
From: Wolfgang Denk @ 2009-06-16 20:09 UTC (permalink / raw)
  To: u-boot

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?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Only in our dreams we are free.  The rest of the time we need  wages.
                                    - Terry Pratchett, _Wyrd Sisters_

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 20:09     ` Wolfgang Denk
@ 2009-06-16 20:19       ` Scott Wood
  2009-06-17  7:18         ` Michele De Candia
  2009-06-17  9:18         ` Wolfgang Denk
  0 siblings, 2 replies; 16+ messages in thread
From: Scott Wood @ 2009-06-16 20:19 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 20:19       ` Scott Wood
@ 2009-06-17  7:18         ` Michele De Candia
  2009-06-17  7:43           ` Michele De Candia
  2009-06-17  7:44           ` Michele De Candia
  2009-06-17  9:18         ` Wolfgang Denk
  1 sibling, 2 replies; 16+ messages in thread
From: Michele De Candia @ 2009-06-17  7:18 UTC (permalink / raw)
  To: u-boot

Scott Wood wrote:
> 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.
>
 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?
> 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


-- 

*Michele Jr **De Candia*

------------------------------------------------------------------------

Value Team

Via Vespri Siciliani, 9
20146 Milano
Tel. +39 0248985722
michele.decandia at valueteam.com <mailto:michele.decandia@valueteam.com>
http://www.valueteam.com

 

CONFIDENTIALITY NOTICE -This message and its attachments (if any) may 
contain confidential, proprietary or legally privileged information and 
is intended only for the use of the addressee named above. No 
confidentiality or privilege is waived or lost by any mistransmission. 
If you are not the intended recipient of this message you are hereby 
notified that you must not use, disseminate, copy it in any form or take 
any action in reliance on it. If you have received this message in error 
please delete it and any copies of it and kindly inform the sender of 
this e-mail by replying or go to www.valueteam.com 
<http://www.valueteam.com> on 'contacts'.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17  7:18         ` Michele De Candia
@ 2009-06-17  7:43           ` Michele De Candia
  2009-06-17  7:44           ` Michele De Candia
  1 sibling, 0 replies; 16+ messages in thread
From: Michele De Candia @ 2009-06-17  7:43 UTC (permalink / raw)
  To: u-boot

Michele De Candia (VT) wrote:
> Scott Wood wrote:
>   
>> 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.
>>
>>     
>  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
>>     
>
>
>   

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17  7:18         ` Michele De Candia
  2009-06-17  7:43           ` Michele De Candia
@ 2009-06-17  7:44           ` Michele De Candia
  2009-06-17 15:54             ` Scott Wood
  1 sibling, 1 reply; 16+ messages in thread
From: Michele De Candia @ 2009-06-17  7:44 UTC (permalink / raw)
  To: u-boot

Michele De Candia (VT) wrote:
> Scott Wood wrote:
>   
>> 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.
>>
>>     
>  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
>>     
>
>
>   

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-16 20:19       ` Scott Wood
  2009-06-17  7:18         ` Michele De Candia
@ 2009-06-17  9:18         ` Wolfgang Denk
  1 sibling, 0 replies; 16+ messages in thread
From: Wolfgang Denk @ 2009-06-17  9:18 UTC (permalink / raw)
  To: u-boot

Dear Scott,

In message <4A37FE47.3030203@freescale.com> you wrote:
>
> > 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.

That was my initial thought, too, which is why I asked Michele for an
explanation.

when I think about typiical use cases like automatic uypdate script
similar to:

	=> tftp 200000 filename
	=> nand erase 0 +${filesize}
	=> nand write 200000 0 ${filesize}

I (and probably any other user) will  expect  that  the  "erase"  and
"nand  write"  commands  use  the  same  interpretation  for the size
argument, i. e. that and "erase" followed by a "write" will have made
sufficient room to write all data.

Thus I reconsidered and think the patch is actually reasonable, as it
does what is the most practical use case needs.

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

Agreed.

But it should be an error when writing to not erase flash blocks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"...this does not mean that some of us should not want, in  a  rather
dispassionate sort of way, to put a bullet through csh's head."
                   - Larry Wall in <1992Aug6.221512.5963@netlabs.com>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17  7:44           ` Michele De Candia
@ 2009-06-17 15:54             ` Scott Wood
  2009-06-17 16:17               ` Michele De Candia
  2009-06-17 22:11               ` Wolfgang Denk
  0 siblings, 2 replies; 16+ messages in thread
From: Scott Wood @ 2009-06-17 15:54 UTC (permalink / raw)
  To: u-boot

On Wed, Jun 17, 2009 at 09:44:41AM +0200, Michele De Candia (VT) wrote:
> 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'

How would the "nand erase" command reliably distinguish between the two alternatives?

What we could do is extend the "plus" semantics (which currently allow
rounding the size up to a block boundary) so that if you have a plus sign
before the size it is interpreted the same as read/write.

I'm a little uneasy about changing the normal erase command from size to end
-- it would break existing uses.  Though, it would make it consistent with
the NOR erase command.  Perhaps a period where it warns but accepts anyway a
size, if the second parameter is less than the first.

-Scott

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 15:54             ` Scott Wood
@ 2009-06-17 16:17               ` Michele De Candia
  2009-06-17 22:04                 ` Scott Wood
  2009-06-17 22:11               ` Wolfgang Denk
  1 sibling, 1 reply; 16+ messages in thread
From: Michele De Candia @ 2009-06-17 16:17 UTC (permalink / raw)
  To: u-boot

Scott Wood wrote:
> On Wed, Jun 17, 2009 at 09:44:41AM +0200, Michele De Candia (VT) wrote:
>   
>> 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'
>>     
>
> How would the "nand erase" command reliably distinguish between the two alternatives?
>
> What we could do is extend the "plus" semantics (which currently allow
> rounding the size up to a block boundary) so that if you have a plus sign
> before the size it is interpreted the same as read/write.
>   

As you has suggested we could use:

'nand erase start end'

and

'nand erase off +size'

> I'm a little uneasy about changing the normal erase command from size to end
> -- it would break existing uses.  Though, it would make it consistent with
> the NOR erase command.  Perhaps a period where it warns but accepts anyway a
> size, if the second parameter is less than the first.
>   

This doesn't work always: for example, when you erase at the NAND begin, 
second parameter could be greater than first one.

It can always warn user when he uses the first erase way.

> -Scott
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>   

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 16:17               ` Michele De Candia
@ 2009-06-17 22:04                 ` Scott Wood
  2009-06-17 22:15                   ` Wolfgang Denk
  0 siblings, 1 reply; 16+ messages in thread
From: Scott Wood @ 2009-06-17 22:04 UTC (permalink / raw)
  To: u-boot

Michele De Candia (VT) wrote:
>> I'm a little uneasy about changing the normal erase command from size 
>> to end
>> -- it would break existing uses.  Though, it would make it consistent 
>> with
>> the NOR erase command.  Perhaps a period where it warns but accepts 
>> anyway a
>> size, if the second parameter is less than the first.
>>   
> 
> This doesn't work always: for example, when you erase at the NAND begin, 
> second parameter could be greater than first one.

Hmm... perhaps check the alignment?  If "end" is supposed to be the last 
to-be-erased byte, not the first not-to-be-erased byte, then if the low 
bits are 0 it's a size (and gets a warning) and if they're 1 it's an end?

Or just always use the new syntax, announce it loudly, and grep the 
board config files for scripts to update.  Or leave it alone and only 
change the plus variant.  :-)

> It can always warn user when he uses the first erase way.

Then what would be the correct, non-warning-producing way to erase a 
region of flash regardless of its bad block content?

-Scott

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 15:54             ` Scott Wood
  2009-06-17 16:17               ` Michele De Candia
@ 2009-06-17 22:11               ` Wolfgang Denk
  1 sibling, 0 replies; 16+ messages in thread
From: Wolfgang Denk @ 2009-06-17 22:11 UTC (permalink / raw)
  To: u-boot

Dear Scott,

In message <20090617155421.GB6333@loki.buserror.net> you wrote:
> > 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'
> 
> How would the "nand erase" command reliably distinguish between the two alternatives?

It cannot.

> What we could do is extend the "plus" semantics (which currently allow
> rounding the size up to a block boundary) so that if you have a plus sign
> before the size it is interpreted the same as read/write.

But it's not only with the  "plus". I think erase should work similar
as write - if we allow write to skip bad blocks and "exceed" thenetto
size, then we must do the same for erase.

> I'm a little uneasy about changing the normal erase command from size to end
> -- it would break existing uses.  Though, it would make it consistent with
> the NOR erase command.  Perhaps a period where it warns but accepts anyway a
> size, if the second parameter is less than the first.

"if the second parameter is less than the first" ? Sorry, can't parse
that. What do you have in mind?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The so-called "desktop metaphor" of today's workstations  is  instead
an  "airplane-seat"  metaphor.  Anyone who has shuffled a lap full of
papers while seated between two portly passengers will recognize  the
difference -- one can see only a very few things at once.
                                                   - Fred Brooks, Jr.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 22:04                 ` Scott Wood
@ 2009-06-17 22:15                   ` Wolfgang Denk
  2009-06-17 22:34                     ` Scott Wood
  0 siblings, 1 reply; 16+ messages in thread
From: Wolfgang Denk @ 2009-06-17 22:15 UTC (permalink / raw)
  To: u-boot

Dear Scott,

In message <4A39685F.6030304@freescale.com> you wrote:
> 
> Hmm... perhaps check the alignment?  If "end" is supposed to be the last 
> to-be-erased byte, not the first not-to-be-erased byte, then if the low 
> bits are 0 it's a size (and gets a warning) and if they're 1 it's an end?

Stop here. Don't add fancy stuf that nobody expects.

Ask yourself what the end user expects - we all think of "erase"
preparing the grounds for "write", right? So both should work oin the
same NAND flash region when given the same arguments (offset and seze,
no matter how these are specified).

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Sorry, but my karma just ran over your dogma.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 22:15                   ` Wolfgang Denk
@ 2009-06-17 22:34                     ` Scott Wood
  2009-06-19  7:01                       ` Michele De Candia
  0 siblings, 1 reply; 16+ messages in thread
From: Scott Wood @ 2009-06-17 22:34 UTC (permalink / raw)
  To: u-boot

Wolfgang Denk wrote:
> Dear Scott,
> 
> In message <4A39685F.6030304@freescale.com> you wrote:
>> Hmm... perhaps check the alignment?  If "end" is supposed to be the last 
>> to-be-erased byte, not the first not-to-be-erased byte, then if the low 
>> bits are 0 it's a size (and gets a warning) and if they're 1 it's an end?
> 
> Stop here. Don't add fancy stuf that nobody expects.

Nobody expects the semantics to silently change...

I'm not particularly advocating this approach, just throwing out 
alternatives.  Leaving it alone is probably best.

> Ask yourself what the end user expects - we all think of "erase"
> preparing the grounds for "write", right?

Sometimes.  Other times, it could be preparing for use by a filesystem 
(which may not use the same bad block handling scheme), to reset the 
environment, for testing, etc.

We have the plus syntax specifically for the use case of erase+write of 
a specific number of bytes; IMO that's the place for this kind of 
interpretation.

> So both should work oin the
> same NAND flash region when given the same arguments (offset and seze,

So then there would be no reliable way of erasing a specific range of 
flash.  To properly use the block-skipping approach, the user needs to 
have in mind a range of actual blocks that the data can take up (i.e. a 
maximum number of bad blocks to expect), so that they can avoid locating 
the next partition within that range.  I don't think it makes sense to 
try to completely hide this.

Perhaps "write" should accept an optional limit argument, returning an 
error if enough bad blocks were encountered to bust the limit.

 > no matter how these are specified).

If the syntax were changed to start/end, but the erase could go beyond 
end anyway, that would be extremely confusing.

-Scott

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [U-Boot] PATCH: bugfix for nand erase failure with bad blocks
  2009-06-17 22:34                     ` Scott Wood
@ 2009-06-19  7:01                       ` Michele De Candia
  0 siblings, 0 replies; 16+ messages in thread
From: Michele De Candia @ 2009-06-19  7:01 UTC (permalink / raw)
  To: u-boot

Scott Wood wrote:
> Wolfgang Denk wrote:
>> Dear Scott,
>>
>> In message <4A39685F.6030304@freescale.com> you wrote:
>>> Hmm... perhaps check the alignment?  If "end" is supposed to be the 
>>> last to-be-erased byte, not the first not-to-be-erased byte, then if 
>>> the low bits are 0 it's a size (and gets a warning) and if they're 1 
>>> it's an end?
>>
>> Stop here. Don't add fancy stuf that nobody expects.
>
> Nobody expects the semantics to silently change...
>
> I'm not particularly advocating this approach, just throwing out 
> alternatives.  Leaving it alone is probably best.
>
>> Ask yourself what the end user expects - we all think of "erase"
>> preparing the grounds for "write", right?
>
> Sometimes.  Other times, it could be preparing for use by a filesystem 
> (which may not use the same bad block handling scheme), to reset the 
> environment, for testing, etc.
>
> We have the plus syntax specifically for the use case of erase+write 
> of a specific number of bytes; IMO that's the place for this kind of 
> interpretation.
>
>> So both should work oin the
>> same NAND flash region when given the same arguments (offset and seze,
>
> So then there would be no reliable way of erasing a specific range of 
> flash.  To properly use the block-skipping approach, the user needs to 
> have in mind a range of actual blocks that the data can take up (i.e. 
> a maximum number of bad blocks to expect), so that they can avoid 
> locating the next partition within that range.  I don't think it makes 
> sense to try to completely hide this.
>
> Perhaps "write" should accept an optional limit argument, returning an 
> error if enough bad blocks were encountered to bust the limit.
>
> > no matter how these are specified).
>
> If the syntax were changed to start/end, but the erase could go beyond 
> end anyway, that would be extremely confusing.
>
> -Scott
Summarizing, there are two alternatives:

- change 'erase' command aligning it with 'write' and 'read' command 
(what the patch does);

- add a third field to the 'erase' command, maybe called 'limit', over 
which erasing can't be done:

    'nand erase start offset limit'

  In this case, I think that 'write' command may be aligned with this 
new syntax too.

It's up to you.

Regards,
Michele

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-06-19  7:01 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-16 13:06 [U-Boot] PATCH: bugfix for nand erase failure with bad blocks Michele De Candia
2009-06-16 18:10 ` Wolfgang Denk
2009-06-16 19:51   ` Michele De Candia
2009-06-16 20:09     ` Wolfgang Denk
2009-06-16 20:19       ` Scott Wood
2009-06-17  7:18         ` Michele De Candia
2009-06-17  7:43           ` Michele De Candia
2009-06-17  7:44           ` Michele De Candia
2009-06-17 15:54             ` Scott Wood
2009-06-17 16:17               ` Michele De Candia
2009-06-17 22:04                 ` Scott Wood
2009-06-17 22:15                   ` Wolfgang Denk
2009-06-17 22:34                     ` Scott Wood
2009-06-19  7:01                       ` Michele De Candia
2009-06-17 22:11               ` Wolfgang Denk
2009-06-17  9:18         ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.