Skip to contentSkip to conversation

Fix NAND erase progress error

PATCH New Hugo Villeneuve 2 participants 10 messages May 16, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix NAND erase progress error

This patch fixes an error when reporting the NAND erase progress as in this example:
U-Boot > nand erase 0000 800
NAND erase: device 0 offset 0x0, size 0x800 Erasing at 0x0 -- 6400% complete.

---

 drivers/mtd/nand/nand_util.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
drivers/mtd/nand/nand_util.c +8 -3
index 6c5624a..bd21e04 100644
@@ -209,10 +209,15 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
 		}
 
 		if (!opts->quiet) {
-			unsigned long long n =(unsigned long long)
-				(erase.addr + meminfo->erasesize - opts->offset)
-				* 100;
+			unsigned long long n;
 			int percent;
+			size_t erased_size = erase.addr - opts->offset + meminfo->erasesize;
+
+			if (erased_size > erase_length) {
+				erased_size = erase_length;
+			}
+
+			n = (unsigned long long) erased_size * 100;
 
 			do_div(n, erase_length);
 			percent = (int)n;
#1 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 5 lines · Hugo Villeneuve

This patch fixes an error when reporting the NAND erase progress as in this example:
U-Boot > nand erase 0000 800
NAND erase: device 0 offset 0x0, size 0x800 Erasing at 0x0 -- 6400% complete.

So the problem is when trying to erase less than an erase block boundary? That should be an error.

The mtd-2.6.22.1 branch emits a warning and increases the length to be erased if it's less than one block, but that's still wrong as it won't deal with unaligned lengths that are greater than one blocksize, and more importantly because it's rather dangerous to erase more than was asked for without the user having the ability to stop it after the warning is printed.

-Scott

#2 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 8 lines · Scott Wood
Quoted 4 lines · Hugo Villeneuve

This patch fixes an error when reporting the NAND erase progress as
in this example: U-Boot > nand erase 0000 800
NAND erase: device 0 offset 0x0, size 0x800
Erasing at 0x0 -- 6400% complete.

So the problem is when trying to erase less than an erase block boundary?

The problem seems to be present if the requested erase size is not an exact multiple of the block size.

Quoted 1 line

That should be an error.

What should be an error, the fact that 6400% is displayed, or the fact that the user is trying to erase less than a block? :)

Quoted 6 lines

The mtd-2.6.22.1 branch emits a warning and increases the length to be erased if it's less than one block, but that's still wrong as it won't deal with unaligned lengths that are greater than one blocksize, and more importantly because it's rather dangerous to erase more than was asked for without the user having the ability to stop it after the warning is printed.

Here are other examples:
---
U-Boot > nand erase 100000 00800
NAND erase: device 0 offset 0x100000, size 0x800
Erasing at 0x100000 -- 6400% complete.
OK

U-Boot > nand erase 100000 20000
NAND erase: device 0 offset 0x100000, size 0x20000 Erasing at 0x100000 -- 100% complete.
OK

U-Boot > nand erase 100000 40000
NAND erase: device 0 offset 0x100000, size 0x40000 Erasing at 0x120000 -- 100% complete.
OK

U-Boot > nand erase 100000 40800
NAND erase: device 0 offset 0x100000, size 0x40800 Erasing at 0x140000 -- 148% complete.
OK
---

Hugo Villeneuve
Hardware developer | Concepteur mat?riel
Lyrtech
Phone/T?l. : (1) (418) 877-4644 #2395
Toll-free/Sans frais - Canada & USA : (1) (888) 922-4644 #2395 Fax/T?l?c. : (1) (418) 877-7710
www.lyrtech.com
Infinite possibilities...TM

THIS MESSAGE AND ALL ATTACHED DOCUMENTS ARE EXCLUSIVELY INTENDED TO THE INDICATED RECIPIENTS AND ITS CONTENTS MAY BE CONFIDENTIAL. IT IS STRICTLY FORBIDDEN TO ANYONE TO TAKE COGNIZANCE, USE, OR DIVULGE THE INFORMATION CONTAINED HEREIN. IF YOU MISTAKENLY RECEIVE THIS MESSAGE, IMMEDIATELY INFORM LYRTECH AND DESTROY THE MESSAGE AND ATTACHMENTS FORTHWITH.THANK YOU.

LE PRESENT MESSAGE ET LES DOCUMENTS QUI Y SONT JOINTS S'ADRESSENT EXCLUSIVEMENT AU(X)DESTINATAIRE(S) INDIQUE(S) ET LEUR TENEUR PEUT ETRE CONFIDENTIELLE. IL EST STRICTEMENT INTERDIT A QUICONQUE D'EN PRENDRE CONNAISSANCE, DE LES UTILISER OU DE LES DIVULGUER. SI VOUS RECEVEZ LE PRESENT MESSAGE PAR ERREUR, VEUILLEZ EN AVISER LYRTECH IMMEDIATEMENT ET DETRUIRE LE MESSAGE SEANCE TENANTE, AINSI QUE LES DOCUMENTS QUI Y SONT JOINTS.

#3 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 5 lines · Hugo Villeneuve
Quoted 1 line · Scott Wood

That should be an error.

What should be an error, the fact that 6400% is displayed, or the fact that the user is trying to erase less than a block? :)

The latter. It should tell the user what the erase block size is, and abort.

-Scott

#4 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 11 lines · Scott Wood
Quoted 5 lines · Hugo Villeneuve
Quoted 1 line · Scott Wood

That should be an error.

What should be an error, the fact that 6400% is displayed, or the fact that the user is trying to erase less than a block? :)

The latter. It should tell the user what the erase block size is, and abort.

-Scott

I would be perfectly happy if the mtd driver reported a warning when the requested erase size is not an exact multiple of the block size, and allow the whole block erase to proceed. Then my patch would make sense. Right now, there is not even a warning displayed...

Hugo V.

Hugo Villeneuve
Hardware developer | Concepteur mat?riel
Lyrtech
Phone/T?l. : (1) (418) 877-4644 #2395
Toll-free/Sans frais - Canada & USA : (1) (888) 922-4644 #2395 Fax/T?l?c. : (1) (418) 877-7710
www.lyrtech.com
Infinite possibilities...TM

THIS MESSAGE AND ALL ATTACHED DOCUMENTS ARE EXCLUSIVELY INTENDED TO THE INDICATED RECIPIENTS AND ITS CONTENTS MAY BE CONFIDENTIAL. IT IS STRICTLY FORBIDDEN TO ANYONE TO TAKE COGNIZANCE, USE, OR DIVULGE THE INFORMATION CONTAINED HEREIN. IF YOU MISTAKENLY RECEIVE THIS MESSAGE, IMMEDIATELY INFORM LYRTECH AND DESTROY THE MESSAGE AND ATTACHMENTS FORTHWITH.THANK YOU.

LE PRESENT MESSAGE ET LES DOCUMENTS QUI Y SONT JOINTS S'ADRESSENT EXCLUSIVEMENT AU(X)DESTINATAIRE(S) INDIQUE(S) ET LEUR TENEUR PEUT ETRE CONFIDENTIELLE. IL EST STRICTEMENT INTERDIT A QUICONQUE D'EN PRENDRE CONNAISSANCE, DE LES UTILISER OU DE LES DIVULGUER. SI VOUS RECEVEZ LE PRESENT MESSAGE PAR ERREUR, VEUILLEZ EN AVISER LYRTECH IMMEDIATEMENT ET DETRUIRE LE MESSAGE SEANCE TENANTE, AINSI QUE LES DOCUMENTS QUI Y SONT JOINTS.

#5 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 3 lines · Hugo Villeneuve

I would be perfectly happy if the mtd driver reported a warning when the requested erase size is not an exact multiple of the block size, and allow the whole block erase to proceed. Then my patch would make sense.

That's what the mtd-2.6.22.1 branch in the NAND repository does. I think it should reject such requests, though.

-Scott

#6 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 8 lines · Scott Wood
Quoted 4 lines · Hugo Villeneuve

I would be perfectly happy if the mtd driver reported a warning when the requested erase size is not an exact multiple of the block size, and allow the whole block erase to proceed. Then my patch would make sense.

That's what the mtd-2.6.22.1 branch in the NAND repository does. I think it should reject such requests, though.

I don?t like that behavior. Let?s say that I want to program a new binary application of 2.8MB. I want to be able to simply erase 2.8MB, without having to do fancy math computations on my calculator based on the block size :)

Hugo V.

Hugo Villeneuve
Hardware developer | Concepteur mat?riel
Lyrtech
Phone/T?l. : (1) (418) 877-4644 #2395
Toll-free/Sans frais - Canada & USA : (1) (888) 922-4644 #2395 Fax/T?l?c. : (1) (418) 877-7710
www.lyrtech.com
Infinite possibilities...TM

THIS MESSAGE AND ALL ATTACHED DOCUMENTS ARE EXCLUSIVELY INTENDED TO THE INDICATED RECIPIENTS AND ITS CONTENTS MAY BE CONFIDENTIAL. IT IS STRICTLY FORBIDDEN TO ANYONE TO TAKE COGNIZANCE, USE, OR DIVULGE THE INFORMATION CONTAINED HEREIN. IF YOU MISTAKENLY RECEIVE THIS MESSAGE, IMMEDIATELY INFORM LYRTECH AND DESTROY THE MESSAGE AND ATTACHMENTS FORTHWITH.THANK YOU.

LE PRESENT MESSAGE ET LES DOCUMENTS QUI Y SONT JOINTS S'ADRESSENT EXCLUSIVEMENT AU(X)DESTINATAIRE(S) INDIQUE(S) ET LEUR TENEUR PEUT ETRE CONFIDENTIELLE. IL EST STRICTEMENT INTERDIT A QUICONQUE D'EN PRENDRE CONNAISSANCE, DE LES UTILISER OU DE LES DIVULGUER. SI VOUS RECEVEZ LE PRESENT MESSAGE PAR ERREUR, VEUILLEZ EN AVISER LYRTECH IMMEDIATEMENT ET DETRUIRE LE MESSAGE SEANCE TENANTE, AINSI QUE LES DOCUMENTS QUI Y SONT JOINTS.

#7 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 6 lines · Hugo Villeneuve
Quoted 5 lines · Scott Wood
Quoted 4 lines · Hugo Villeneuve

I would be perfectly happy if the mtd driver reported a warning when the requested erase size is not an exact multiple of the block size, and allow the whole block erase to proceed. Then my patch would make sense.

Quoted 7 lines
Quoted 2 lines

That's what the mtd-2.6.22.1 branch in the NAND repository does. I think it should reject such requests, though.

I don?t like that behavior. Let?s say that I want to program a new binary application of 2.8MB. I want to be able to simply erase 2.8MB, without having to do fancy math computations on my calculator based on the block size :)

Hmm... maybe a flag to request round-up? Or at the very least, have "help nand" mention the rounding-up behavior.

-Scott

#8 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 10 lines · Scott Wood
Quoted 9 lines · Hugo Villeneuve
Quoted 7 lines · Scott Wood
Quoted 4 lines · Hugo Villeneuve

I would be perfectly happy if the mtd driver reported a warning when the requested erase size is not an exact multiple of the block size, and allow the whole block erase to proceed. Then my patch would make sense.

That's what the mtd-2.6.22.1 branch in the NAND repository does. I think it should reject such requests, though.

Quoted 6 lines
Quoted 4 lines

I don?t like that behavior. Let?s say that I want to program a new binary application of 2.8MB. I want to be able to simply erase 2.8MB, without having to do fancy math computations on my calculator based on the block size :)

Hmm... maybe a flag to request round-up?

Yes, maybe some kind of "-f" force flag to continue even if the requested size is less than a block...

Quoted 2 lines

Or at the very least, have
"help nand" mention the rounding-up behavior.

I agree.

Either way, I think my patch, or a variation of it, should need to be applied to get rid of that ugly 6400%.

Hugo V.

Hugo Villeneuve
Hardware developer | Concepteur mat?riel
Lyrtech
Phone/T?l. : (1) (418) 877-4644 #2395
Toll-free/Sans frais - Canada & USA : (1) (888) 922-4644 #2395 Fax/T?l?c. : (1) (418) 877-7710
www.lyrtech.com
Infinite possibilities...TM

THIS MESSAGE AND ALL ATTACHED DOCUMENTS ARE EXCLUSIVELY INTENDED TO THE INDICATED RECIPIENTS AND ITS CONTENTS MAY BE CONFIDENTIAL. IT IS STRICTLY FORBIDDEN TO ANYONE TO TAKE COGNIZANCE, USE, OR DIVULGE THE INFORMATION CONTAINED HEREIN. IF YOU MISTAKENLY RECEIVE THIS MESSAGE, IMMEDIATELY INFORM LYRTECH AND DESTROY THE MESSAGE AND ATTACHMENTS FORTHWITH.THANK YOU.

LE PRESENT MESSAGE ET LES DOCUMENTS QUI Y SONT JOINTS S'ADRESSENT EXCLUSIVEMENT AU(X)DESTINATAIRE(S) INDIQUE(S) ET LEUR TENEUR PEUT ETRE CONFIDENTIELLE. IL EST STRICTEMENT INTERDIT A QUICONQUE D'EN PRENDRE CONNAISSANCE, DE LES UTILISER OU DE LES DIVULGUER. SI VOUS RECEVEZ LE PRESENT MESSAGE PAR ERREUR, VEUILLEZ EN AVISER LYRTECH IMMEDIATEMENT ET DETRUIRE LE MESSAGE SEANCE TENANTE, AINSI QUE LES DOCUMENTS QUI Y SONT JOINTS.

#9 lore raw

PATCH 1/1 Fix NAND erase progress error

Quoted 2 lines · Hugo Villeneuve

Either way, I think my patch, or a variation of it, should need to be applied to get rid of that ugly 6400%.

Agreed -- the patch in mtd-2.6.22.1 takes care of the percentage issue at the same time as issuing the warning.

-Scott