[PATCH 1/2] mtd: nand: add erased-page bitflip correction

Bill Pringlemeir bpringlemeir at nbsps.com
Mon Mar 17 19:01:41 EDT 2014


> On 17 Mar 2014, computersforpeace at gmail.com wrote:

>> Subpage writing is performed within the MTD layer. Do you have any
>> examples aside from subpage writes? I really don't know the specifics of
>> how UBIFS tries to read blank pages (I think Artem replied pretty
>> in-depth to Pekon's UBIFS patches about this; I'll have to re-read), but
>> I did not understand them to be in the hot path.
>
> [snip]
>
>> I'm curious: which drivers are you looking at?
>
>> If MTD drivers are doing "subpage" writing by doing read/modify/write,
>> that does indeed seem to be rather broken. Or at least, it doesn't seem
>> very maintainable in the presence of bitflips like this. Can't subpage
>> writes be done where all "unprogrammed" data is assumed to be 0xff? (I'm
>> admittedly not very familiar with subpage programming implementations.)


On 17 Mar 2014, bpringlemeir at nbsps.com wrote:

> Sub page writing seems to be like this for many Freescale controllers
> (the only ones I am familiar with).  I don't think the controllers can
> read a partial page.  It must read/write full pages.  As the MTD has no
> state about how many sub-pages are written, it does a
> 'read-modify-write' to ensure that already written data is preserved.
> Zero to three sub-pages may have already been written with 2k pages and
> 512 byte sub-pages chips.

> See:
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/nand/mxc_nand.c#n1099

> I beleive that the 'NAND_CMD_SEQIN' is sent before a
> 'NAND_CMD_PAGEPROG', by the MTD/nand base.  This will read the page
> before programming it so that sub-pages are done correctly.

Sorry, this one is even more obvious.

 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/nand/mpc5121_nfc.c#n367

As a matter of fact, I could be wrong about the 'mxc_nand'.  Although
my bench mark data does say that the read is ~2x as fast as the writes
for the 'mxc_nand'.

Regards,
Bill Pringlemeir.





More information about the linux-mtd mailing list