[UPDATE] DOCBoot support for NFTL-based DOC2000

Dan Brown dan.brown at nrl.navy.mil
Wed Apr 6 14:23:34 EDT 2005


Dan Brown wrote:
> Zeri Virgo wrote:
> 
>>   OOB Data: 36 7f eb 1f 3b aa ff ff ff ff ff ff ff ff ff ff
> 
> Sounds right, at first glance.  The OOB data actually follows each block 
> (perhaps that's just a terminology issue :) )

Ah, I see it!  That OOB data is actually wrong, it should be:

?? ?? ?? ?? ?? ?? 55 55 ff ff ff ff ff ff ff ff

Here's the whole sordid story:

1) The only reason DOCBoot has been working for *me* lately is because 
I've been lazy/stupid.

2) Specifically, although I've been updating my copies of the kernel 
code to keep pace with CVS changes, I have *failed* to update my 
mtd/utils subdirectory.

3) Thomas recently made a modification to nandwrite.  It forces all OOB 
bytes not designated as "free" to 0xff.  Perfectly sensible.

4) There is apparently a long-standing oddity in diskonchip.c, in which 
I set the number of ECC bytes to 6, and designate the last 8 bytes as 
"free" bytes.  This leaves two bytes (right after the ECC) unaccounted for.

5) DOCBoot puts magic numbers in those exact two OOB bytes.

6) As a result, recent versions of nandwrite will erase the information 
DOCBoot needs to identify kernel pages.  I've been blissfully unaware of 
this because I've been using an older version.

7) So, I've changed diskonchip.c to designate all of the last 10 bytes 
as "free".  It seems like the right thing to do, since only the first 6 
bytes are used by the hardware itself.  BUT ....

8) I have this nagging feeling there was a reason for 4).

9) I think this may break compatibility with any jffs2 filesystems 
written before the change, because the cleanmarker will be in the wrong 
place.  Hmm... maybe I should back out the change.  David? Thomas? Opinions?

10) AAAARRRGGGHHHH!!!!

	-Dan




More information about the linux-mtd mailing list