ubi: Relax the 'no MLC' rule and allow MLCs operating in SLC mode
authorBoris Brezillon <bbrezillon@kernel.org>
Sun, 3 May 2020 15:53:41 +0000 (17:53 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 11 May 2020 07:51:42 +0000 (09:51 +0200)
The MTD layer provides an SLC mode (purely software emulation of SLC
behavior) addressing the paired-pages corruption issue, which was the
main reason for refusing attaching MLC NANDs to UBI.

Relax this rule and allow partitions that have the
MTD_EMULATE_SLC_ON_MLC flag set to be attached.

Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Richard Weinberger <richard@nod.at>
Link: https://lore.kernel.org/linux-mtd/20200503155341.16712-9-miquel.raynal@bootlin.com
drivers/mtd/ubi/build.c

index 12c0234..e85b04e 100644 (file)
@@ -867,8 +867,11 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
         * Both UBI and UBIFS have been designed for SLC NAND and NOR flashes.
         * MLC NAND is different and needs special care, otherwise UBI or UBIFS
         * will die soon and you will lose all your data.
+        * Relax this rule if the partition we're attaching to operates in SLC
+        * mode.
         */
-       if (mtd->type == MTD_MLCNANDFLASH) {
+       if (mtd->type == MTD_MLCNANDFLASH &&
+           !(mtd->flags & MTD_SLC_ON_MLC_EMULATION)) {
                pr_err("ubi: refuse attaching mtd%d - MLC NAND is not supported\n",
                        mtd->index);
                return -EINVAL;