From 8b0ba30c25fe5da139443de9ced8bf0b3e8e5b4d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 15 Apr 2023 20:39:23 +0200 Subject: [PATCH] 5.4-stable patches added patches: mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch mtdblock-tolerate-corrected-bit-flips.patch --- ...x-bitmask-for-length-in-command-word.patch | 57 ++++++++++++++++++ ...m32_fmc2-remove-unsupported-edo-mode.patch | 35 +++++++++++ ...tdblock-tolerate-corrected-bit-flips.patch | 58 +++++++++++++++++++ queue-5.4/series | 3 + 4 files changed, 153 insertions(+) create mode 100644 queue-5.4/mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch create mode 100644 queue-5.4/mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch create mode 100644 queue-5.4/mtdblock-tolerate-corrected-bit-flips.patch diff --git a/queue-5.4/mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch b/queue-5.4/mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch new file mode 100644 index 00000000000..0acbb7dc6df --- /dev/null +++ b/queue-5.4/mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch @@ -0,0 +1,57 @@ +From 93942b70461574ca7fc3d91494ca89b16a4c64c7 Mon Sep 17 00:00:00 2001 +From: Arseniy Krasnov +Date: Wed, 29 Mar 2023 10:47:26 +0300 +Subject: mtd: rawnand: meson: fix bitmask for length in command word + +From: Arseniy Krasnov + +commit 93942b70461574ca7fc3d91494ca89b16a4c64c7 upstream. + +Valid mask is 0x3FFF, without this patch the following problems were +found: + +1) [ 0.938914] Could not find a valid ONFI parameter page, trying + bit-wise majority to recover it + [ 0.947384] ONFI parameter recovery failed, aborting + +2) Read with disabled ECC mode was broken. + +Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") +Cc: +Signed-off-by: Arseniy Krasnov +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/3794ffbf-dfea-e96f-1f97-fe235b005e19@sberdevices.ru +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/meson_nand.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/mtd/nand/raw/meson_nand.c ++++ b/drivers/mtd/nand/raw/meson_nand.c +@@ -276,7 +276,7 @@ static void meson_nfc_cmd_access(struct + + if (raw) { + len = mtd->writesize + mtd->oobsize; +- cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); ++ cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); + writel(cmd, nfc->reg_base + NFC_REG_CMD); + return; + } +@@ -540,7 +540,7 @@ static int meson_nfc_read_buf(struct nan + if (ret) + goto out; + +- cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); ++ cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); + writel(cmd, nfc->reg_base + NFC_REG_CMD); + + meson_nfc_drain_cmd(nfc); +@@ -564,7 +564,7 @@ static int meson_nfc_write_buf(struct na + if (ret) + return ret; + +- cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); ++ cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); + writel(cmd, nfc->reg_base + NFC_REG_CMD); + + meson_nfc_drain_cmd(nfc); diff --git a/queue-5.4/mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch b/queue-5.4/mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch new file mode 100644 index 00000000000..5eac7b843ac --- /dev/null +++ b/queue-5.4/mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch @@ -0,0 +1,35 @@ +From f71e0e329c152c7f11ddfd97ffc62aba152fad3f Mon Sep 17 00:00:00 2001 +From: Christophe Kerello +Date: Tue, 28 Mar 2023 17:58:18 +0200 +Subject: mtd: rawnand: stm32_fmc2: remove unsupported EDO mode + +From: Christophe Kerello + +commit f71e0e329c152c7f11ddfd97ffc62aba152fad3f upstream. + +Remove the EDO mode support from as the FMC2 controller does not +support the feature. + +Signed-off-by: Christophe Kerello +Fixes: 2cd457f328c1 ("mtd: rawnand: stm32_fmc2: add STM32 FMC2 NAND flash controller driver") +Cc: stable@vger.kernel.org #v5.4+ +Reviewed-by: Tudor Ambarus +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20230328155819.225521-2-christophe.kerello@foss.st.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/stm32_fmc2_nand.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/mtd/nand/raw/stm32_fmc2_nand.c ++++ b/drivers/mtd/nand/raw/stm32_fmc2_nand.c +@@ -1592,6 +1592,9 @@ static int stm32_fmc2_setup_interface(st + if (IS_ERR(sdrt)) + return PTR_ERR(sdrt); + ++ if (sdrt->tRC_min < 30000) ++ return -EOPNOTSUPP; ++ + if (chipnr == NAND_DATA_IFACE_CHECK_ONLY) + return 0; + diff --git a/queue-5.4/mtdblock-tolerate-corrected-bit-flips.patch b/queue-5.4/mtdblock-tolerate-corrected-bit-flips.patch new file mode 100644 index 00000000000..00aff5d99ed --- /dev/null +++ b/queue-5.4/mtdblock-tolerate-corrected-bit-flips.patch @@ -0,0 +1,58 @@ +From 0c3089601f064d80b3838eceb711fcac04bceaad Mon Sep 17 00:00:00 2001 +From: Bang Li +Date: Wed, 29 Mar 2023 00:30:12 +0800 +Subject: mtdblock: tolerate corrected bit-flips + +From: Bang Li + +commit 0c3089601f064d80b3838eceb711fcac04bceaad upstream. + +mtd_read() may return -EUCLEAN in case of corrected bit-flips.This +particular condition should not be treated like an error. + +Signed-off-by: Bang Li +Fixes: e47f68587b82 ("mtd: check for max_bitflips in mtd_read_oob()") +Cc: # v3.7 +Acked-by: Richard Weinberger +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20230328163012.4264-1-libang.linuxer@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/mtdblock.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/drivers/mtd/mtdblock.c ++++ b/drivers/mtd/mtdblock.c +@@ -150,7 +150,7 @@ static int do_cached_write (struct mtdbl + mtdblk->cache_state = STATE_EMPTY; + ret = mtd_read(mtd, sect_start, sect_size, + &retlen, mtdblk->cache_data); +- if (ret) ++ if (ret && !mtd_is_bitflip(ret)) + return ret; + if (retlen != sect_size) + return -EIO; +@@ -185,8 +185,12 @@ static int do_cached_read (struct mtdblk + pr_debug("mtdblock: read on \"%s\" at 0x%lx, size 0x%x\n", + mtd->name, pos, len); + +- if (!sect_size) +- return mtd_read(mtd, pos, len, &retlen, buf); ++ if (!sect_size) { ++ ret = mtd_read(mtd, pos, len, &retlen, buf); ++ if (ret && !mtd_is_bitflip(ret)) ++ return ret; ++ return 0; ++ } + + while (len > 0) { + unsigned long sect_start = (pos/sect_size)*sect_size; +@@ -206,7 +210,7 @@ static int do_cached_read (struct mtdblk + memcpy (buf, mtdblk->cache_data + offset, size); + } else { + ret = mtd_read(mtd, pos, size, &retlen, buf); +- if (ret) ++ if (ret && !mtd_is_bitflip(ret)) + return ret; + if (retlen != size) + return -EIO; diff --git a/queue-5.4/series b/queue-5.4/series index 9163c80cd89..a40d9f6eed1 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -48,3 +48,6 @@ bluetooth-l2cap-fix-use-after-free-in-l2cap_disconnect_-req-rsp.patch bluetooth-fix-race-condition-in-hidp_session_thread.patch btrfs-print-checksum-type-and-implementation-at-mount-time.patch btrfs-fix-fast-csum-implementation-detection.patch +mtdblock-tolerate-corrected-bit-flips.patch +mtd-rawnand-meson-fix-bitmask-for-length-in-command-word.patch +mtd-rawnand-stm32_fmc2-remove-unsupported-edo-mode.patch -- 2.47.3