• B
    mtd: rawnand: micron: Get the actual number of bitflips · 23017807
    Boris Brezillon 提交于
    The MT29F2Gxxx chips with 4bits/512byte on-die ECC let us know when
    some bitflips were corrected by the on-die ECC, but they do not report
    the actual number of bitflips that were present in the data+ECC chunk.
    
    We initially decided to always return ecc->strength to avoid re-reading
    the page in raw mode + comparing it to the corrected buffer to extract
    the real number of bitflips, but this forces UBI to move data around as
    soon as one bitflip is present in a page.
    
    This not only wears the NAND out faster, but also degrades
    performances, since reading a full PEB + writing it back to a different
    PEB + erasing the old one is much more expensive than re-reading the
    faulty page in raw mode and comparing it to the corrected buffer.
    In most cases, the actual number of bitflips does not exceed the
    bitflips threshold, and UBI won't have to move data around. Otherwise,
    we can assume the time spent re-reading the page and doing the
    comparison is negligible compared to the time UBI spends moving a full
    PEB to another PEB.
    
    Note that this logic is not applied to chips with 8bits/512byte on-die
    ECC, because those chips provide fine-grained information (the maximum
    error is 1 bit, and it will not force UBI to move blocks around at the
    first bitflip).
    Suggested-by: NBean Huo <beanhuo@micron.com>
    Signed-off-by: NBoris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: NMiquel Raynal <miquel.raynal@bootlin.com>
    23017807
nand_micron.c 13.5 KB