]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Jan 2018 20:32:50 +0000 (21:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Jan 2018 20:32:50 +0000 (21:32 +0100)
added patches:
mtd-nand-pxa3xx-fix-readoob-implementation.patch

queue-3.18/mtd-nand-pxa3xx-fix-readoob-implementation.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/mtd-nand-pxa3xx-fix-readoob-implementation.patch b/queue-3.18/mtd-nand-pxa3xx-fix-readoob-implementation.patch
new file mode 100644 (file)
index 0000000..4e812f5
--- /dev/null
@@ -0,0 +1,51 @@
+From fee4380f368e84ed216b62ccd2fbc4126f2bf40b Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Mon, 18 Dec 2017 11:32:45 +0100
+Subject: mtd: nand: pxa3xx: Fix READOOB implementation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+
+commit fee4380f368e84ed216b62ccd2fbc4126f2bf40b upstream.
+
+In the current driver, OOB bytes are accessed in raw mode, and when a
+page access is done with NDCR_SPARE_EN set and NDCR_ECC_EN cleared, the
+driver must read the whole spare area (64 bytes in case of a 2k page,
+16 bytes for a 512 page). The driver was only reading the free OOB
+bytes, which was leaving some unread data in the FIFO and was somehow
+leading to a timeout.
+
+We could patch the driver to read ->spare_size + ->ecc_size instead of
+just ->spare_size when READOOB is requested, but we'd better make
+in-band and OOB accesses consistent.
+Since the driver is always accessing in-band data in non-raw mode (with
+the ECC engine enabled), we should also access OOB data in this mode.
+That's particularly useful when using the BCH engine because in this
+mode the free OOB bytes are also ECC protected.
+
+Fixes: 43bcfd2bb24a ("mtd: nand: pxa3xx: Add driver-specific ECC BCH support")
+Reported-by: Sean Nyekjær <sean.nyekjaer@prevas.dk>
+Tested-by: Willy Tarreau <w@1wt.eu>
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
+Tested-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
+Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
+Signed-off-by: Richard Weinberger <richard@nod.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mtd/nand/pxa3xx_nand.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/mtd/nand/pxa3xx_nand.c
++++ b/drivers/mtd/nand/pxa3xx_nand.c
+@@ -743,6 +743,7 @@ static void prepare_start_command(struct
+       switch (command) {
+       case NAND_CMD_READ0:
++      case NAND_CMD_READOOB:
+       case NAND_CMD_PAGEPROG:
+               info->use_ecc = 1;
+       case NAND_CMD_READOOB:
index ddb17cd5a99fcbc8aefaacdbf121c2b61408119a..1c42eaaa4f7bafb921d62cceb93bbd80a1279304 100644 (file)
@@ -5,3 +5,4 @@ kernel-signal.c-protect-the-traced-signal_unkillable-tasks-from-sigkill.patch
 kernel-signal.c-protect-the-signal_unkillable-tasks-from-sig_kernel_only-signals.patch
 kernel-signal.c-remove-the-no-longer-needed-signal_unkillable-check-in-complete_signal.patch
 input-elantech-add-new-icbody-type-15.patch
+mtd-nand-pxa3xx-fix-readoob-implementation.patch