From: Greg Kroah-Hartman Date: Thu, 25 Oct 2012 23:55:01 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.0.49~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f75c727d56c13291a5bb49ed8cd1bebbf893b234;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: mtd-nand-allow-nand_no_subpage_write-to-be-set-from-driver.patch --- diff --git a/queue-3.4/mtd-nand-allow-nand_no_subpage_write-to-be-set-from-driver.patch b/queue-3.4/mtd-nand-allow-nand_no_subpage_write-to-be-set-from-driver.patch new file mode 100644 index 00000000000..dff32e905fc --- /dev/null +++ b/queue-3.4/mtd-nand-allow-nand_no_subpage_write-to-be-set-from-driver.patch @@ -0,0 +1,68 @@ +From bf7a01bf7987b63b121d572b240c132ec44129c4 Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Fri, 13 Jul 2012 09:28:24 -0700 +Subject: mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver + +From: Brian Norris + +commit bf7a01bf7987b63b121d572b240c132ec44129c4 upstream. + +The NAND_CHIPOPTIONS_MSK has limited utility and is causing real bugs. It +silently masks off at least one flag that might be set by the driver +(NAND_NO_SUBPAGE_WRITE). This breaks the GPMI NAND driver and possibly +others. + +Really, as long as driver writers exercise a small amount of care with +NAND_* options, this mask is not necessary at all; it was only here to +prevent certain options from accidentally being set by the driver. But the +original thought turns out to be a bad idea occasionally. Thus, kill it. + +Note, this patch fixes some major gpmi-nand breakage. + +Signed-off-by: Brian Norris +Tested-by: Huang Shijie +Signed-off-by: Artem Bityutskiy +Signed-off-by: David Woodhouse +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/nand_base.c | 9 +++------ + include/linux/mtd/nand.h | 3 --- + 2 files changed, 3 insertions(+), 9 deletions(-) + +--- a/drivers/mtd/nand/nand_base.c ++++ b/drivers/mtd/nand/nand_base.c +@@ -2897,9 +2897,7 @@ static int nand_flash_detect_onfi(struct + if (le16_to_cpu(p->features) & 1) + *busw = NAND_BUSWIDTH_16; + +- chip->options &= ~NAND_CHIPOPTIONS_MSK; +- chip->options |= (NAND_NO_READRDY | +- NAND_NO_AUTOINCR) & NAND_CHIPOPTIONS_MSK; ++ chip->options |= NAND_NO_READRDY | NAND_NO_AUTOINCR; + + pr_info("ONFI flash detected\n"); + return 1; +@@ -3064,9 +3062,8 @@ static struct nand_flash_dev *nand_get_f + mtd->erasesize <<= ((id_data[3] & 0x03) << 1); + } + } +- /* Get chip options, preserve non chip based options */ +- chip->options &= ~NAND_CHIPOPTIONS_MSK; +- chip->options |= type->options & NAND_CHIPOPTIONS_MSK; ++ /* Get chip options */ ++ chip->options |= type->options; + + /* + * Check if chip is not a Samsung device. Do not clear the +--- a/include/linux/mtd/nand.h ++++ b/include/linux/mtd/nand.h +@@ -215,9 +215,6 @@ typedef enum { + #define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT) \ + && (chip->page_shift > 9)) + +-/* Mask to zero out the chip options, which come from the id table */ +-#define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR) +- + /* Non chip related options */ + /* This option skips the bbt scan during initialization. */ + #define NAND_SKIP_BBTSCAN 0x00010000 diff --git a/queue-3.4/series b/queue-3.4/series index 7eb6b472051..e9aa2dd2c7f 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -39,3 +39,4 @@ sparc64-like-x86-we-should-check-current-mm-during-perf-backtrace-generation.pat sparc64-fix-bit-twiddling-in-sparc_pmu_enable_event.patch sparc64-do-not-clobber-personality-flags-in-sys_sparc64_personality.patch sparc64-be-less-verbose-during-vmemmap-population.patch +mtd-nand-allow-nand_no_subpage_write-to-be-set-from-driver.patch