Hello, Back when support for Micron 4bit/512byte on-die ECC was added, we decided that it wasn't worth retrieving the real number of bitflips when the chip was returning WRITE_RECOMMENDED and instead decided to always return the maximum value (ECC strength). This decision leads to UBI moving eraseblocks around as soon as 1 bitflip is present, which is far from optimal, and might wear the NAND out faster than if we get the actual number of bitflips by re-reading the page in raw mode and comparing its content to the corrected version. IIRC, Bean warned us about that, but it seems we didn't listen, so now is time to revisit the implementation and implement what Bean initially suggested. This implementation has been tested on an MT29F2G08ABAEAH4, and seems to work as expected (nandbiterrs works fine, and the real number of bitflips is now returned). Here are some details about these patches: Patch 1 is just a cleanup to avoid passing parameters we don't need to the ecc_status() functions. Patch 2 is preparing things for the actual changes by reworking the ordering in the read function, and patch 3 is implementing the read-in-raw-mode-and-compare logic. Regards, Boris Boris Brezillon (3): mtd: rawnand: micron: Stop passing mtd to ecc_status() funcs mtd: rawnand: micron: Disable ECC earlier in the read path mtd: rawnand: micron: Get the actual number of bitflips drivers/mtd/nand/raw/nand_micron.c | 145 ++++++++++++++++++++++++++++++------- 1 file changed, 120 insertions(+), 25 deletions(-) -- 2.14.1