summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Brezillon <bbrezillon@kernel.org>2020-05-03 17:53:41 +0200
committerMiquel Raynal <miquel.raynal@bootlin.com>2020-05-11 09:51:42 +0200
commit66aaba3a07cb8e53878bbeabe54660a646b55a34 (patch)
tree6643470b3c9aa1ef9733548b5c0bfc1d51d426a8
parentmtd: cmdlinepart: Add an slc option to use SLC mode on a part (diff)
downloadlinux-66aaba3a07cb8e53878bbeabe54660a646b55a34.tar.xz
linux-66aaba3a07cb8e53878bbeabe54660a646b55a34.zip
ubi: Relax the 'no MLC' rule and allow MLCs operating in SLC mode
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
-rw-r--r--drivers/mtd/ubi/build.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 12c02342149c..e85b04e9716b 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -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;