[PATCH 1/3] mtd: nand/docg4: add support for writing in reliable mode

Robert Jarzmik robert.jarzmik at free.fr
Sat Dec 15 05:37:43 EST 2012

Mike Dunn <mikedunn at newsguy.com> writes:

Hi Mike,

Sorry for the late reply, I was taken over by work.

> Well, it's a module parameter, so the mode can't change unless the module is
> reloaded, which means everything must be umounted first, right?

>> Imagine you have your rootfs mounted on /dev/mtd2, and u-boot is in /dev/mtd1 :
>> wouldn't changing the reliable mode to write "mtd1" corrupt all writes to mtd2 ?
> I think this may only apply to docg3 (and docp3).  If I'm interpreting your
> point correctly and IIRC from working with the docp3... the docg4 doesn't have
> "planes".  Reliable mode uses *consecutive* 2k pages on the docg4, so the
> side-effects of writing in reliable mode are restricted to the adjacent page,
> not some far-away offset.  The lack of "planes" on the docg4 greatly simplifies
> things.
> Does this make sense?
Yes. As a side note, the reliable mode of docg3 write on consecutive 512b pages
(see log in commit c3de8a8a5a28603f8d318245992dbcda2e88a007).

>> The patch I chose to make barebox (instead of u-boot) work was to write the
>> barebox part with a special tool which "duplicates" pages, which ends up in the
>> same flash writes.
>> My feeling here is this mode should be "mtd partition bound", not driver bound
>> if you want to have it in your driver.
> My thinking is that it's a special case, probably limited to writing the SPL, so
> making it a module parameter where the user has to explicitly specify it would
> make it available to users without too much risk.  I also put a scary warning
> about it in a comment in the driver source.
OK, your choice.

As I have now the rootfs (ubifs on /dev/mtd2) on /, I cannot use docg3 as a
module and remove it anymore. Hence my hope somebody comes out with a solution
so that I have :
 - /dev/mtd1 in reliable mode (for the SPL)
 - /dev/mtd2 in normal mode (for root filesystem)

By now, I chose to use the SPL to rewrite itself (ie. barebox overwrites
/dev/mtd2 content). That's a bit sub-optimal as a fully booted kernel would be
able to make more checks (reread written blocks, check OOB signatures, ...).

> BTW, I think that my factory babdblock tables are written in reliable mode, so
> it would be useful to add support to the driver for reading in this mode as well
> (this patch only writes in reliable mode).  Data written in reliable mode can
> still be read normally from the even-numbered 2k pages (I don't recall if this
> is the case for the docg3), so I can read the factory bbt now, just not as
> reliably.
Ah good point, I will check on the docg3 how it worked, to see if they used also
the reliable mode for BBT table.



More information about the linux-mtd mailing list