]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Jan 2015 19:39:08 +0000 (11:39 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Jan 2015 19:39:08 +0000 (11:39 -0800)
added patches:
md-bitmap-always-wait-for-writes-on-unplug.patch
mfd-tc6393xb-fail-ohci-suspend-if-full-state-restore-is-required.patch
mmc-block-add-newline-to-sysfs-display-of-force_ro.patch
mmc-dw_mmc-avoid-write-to-cdthrctl-on-older-versions.patch
mmc-sdhci-pci-o2micro-fix-dell-e5440-issue.patch

queue-3.14/md-bitmap-always-wait-for-writes-on-unplug.patch [new file with mode: 0644]
queue-3.14/mfd-tc6393xb-fail-ohci-suspend-if-full-state-restore-is-required.patch [new file with mode: 0644]
queue-3.14/mmc-block-add-newline-to-sysfs-display-of-force_ro.patch [new file with mode: 0644]
queue-3.14/mmc-dw_mmc-avoid-write-to-cdthrctl-on-older-versions.patch [new file with mode: 0644]
queue-3.14/mmc-sdhci-pci-o2micro-fix-dell-e5440-issue.patch [new file with mode: 0644]

diff --git a/queue-3.14/md-bitmap-always-wait-for-writes-on-unplug.patch b/queue-3.14/md-bitmap-always-wait-for-writes-on-unplug.patch
new file mode 100644 (file)
index 0000000..474adad
--- /dev/null
@@ -0,0 +1,62 @@
+From 4b5060ddae2b03c5387321fafc089d242225697a Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@suse.de>
+Date: Tue, 9 Sep 2014 14:13:51 +1000
+Subject: md/bitmap: always wait for writes on unplug.
+
+From: NeilBrown <neilb@suse.de>
+
+commit 4b5060ddae2b03c5387321fafc089d242225697a upstream.
+
+If two threads call bitmap_unplug at the same time, then
+one might schedule all the writes, and the other might
+decide that it doesn't need to wait.  But really it does.
+
+It rarely hurts to wait when it isn't absolutely necessary,
+and the current code doesn't really focus on 'absolutely necessary'
+anyway.  So just wait always.
+
+This can potentially lead to data corruption if a crash happens
+at an awkward time and data was written before the bitmap was
+updated.  It is very unlikely, but this should go to -stable
+just to be safe.  Appropriate for any -stable.
+
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/md/bitmap.c |   16 ++++++----------
+ 1 file changed, 6 insertions(+), 10 deletions(-)
+
+--- a/drivers/md/bitmap.c
++++ b/drivers/md/bitmap.c
+@@ -883,7 +883,6 @@ void bitmap_unplug(struct bitmap *bitmap
+ {
+       unsigned long i;
+       int dirty, need_write;
+-      int wait = 0;
+       if (!bitmap || !bitmap->storage.filemap ||
+           test_bit(BITMAP_STALE, &bitmap->flags))
+@@ -901,16 +900,13 @@ void bitmap_unplug(struct bitmap *bitmap
+                       clear_page_attr(bitmap, i, BITMAP_PAGE_PENDING);
+                       write_page(bitmap, bitmap->storage.filemap[i], 0);
+               }
+-              if (dirty)
+-                      wait = 1;
+-      }
+-      if (wait) { /* if any writes were performed, we need to wait on them */
+-              if (bitmap->storage.file)
+-                      wait_event(bitmap->write_wait,
+-                                 atomic_read(&bitmap->pending_writes)==0);
+-              else
+-                      md_super_wait(bitmap->mddev);
+       }
++      if (bitmap->storage.file)
++              wait_event(bitmap->write_wait,
++                         atomic_read(&bitmap->pending_writes)==0);
++      else
++              md_super_wait(bitmap->mddev);
++
+       if (test_bit(BITMAP_WRITE_ERROR, &bitmap->flags))
+               bitmap_file_kick(bitmap);
+ }
diff --git a/queue-3.14/mfd-tc6393xb-fail-ohci-suspend-if-full-state-restore-is-required.patch b/queue-3.14/mfd-tc6393xb-fail-ohci-suspend-if-full-state-restore-is-required.patch
new file mode 100644 (file)
index 0000000..12e1782
--- /dev/null
@@ -0,0 +1,55 @@
+From 1a5fb99de4850cba710d91becfa2c65653048589 Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Fri, 24 Oct 2014 21:19:57 +0400
+Subject: mfd: tc6393xb: Fail ohci suspend if full state restore is required
+
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+
+commit 1a5fb99de4850cba710d91becfa2c65653048589 upstream.
+
+Some boards with TC6393XB chip require full state restore during system
+resume thanks to chip's VCC being cut off during suspend (Sharp SL-6000
+tosa is one of them). Failing to do so would result in ohci Oops on
+resume due to internal memory contentes being changed. Fail ohci suspend
+on tc6393xb is full state restore is required.
+
+Recommended workaround is to unbind tmio-ohci driver before suspend and
+rebind it after resume.
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mfd/tc6393xb.c |   13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/mfd/tc6393xb.c
++++ b/drivers/mfd/tc6393xb.c
+@@ -263,6 +263,17 @@ static int tc6393xb_ohci_disable(struct
+       return 0;
+ }
++static int tc6393xb_ohci_suspend(struct platform_device *dev)
++{
++      struct tc6393xb_platform_data *tcpd = dev_get_platdata(dev->dev.parent);
++
++      /* We can't properly store/restore OHCI state, so fail here */
++      if (tcpd->resume_restore)
++              return -EBUSY;
++
++      return tc6393xb_ohci_disable(dev);
++}
++
+ static int tc6393xb_fb_enable(struct platform_device *dev)
+ {
+       struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent);
+@@ -403,7 +414,7 @@ static struct mfd_cell tc6393xb_cells[]
+               .num_resources = ARRAY_SIZE(tc6393xb_ohci_resources),
+               .resources = tc6393xb_ohci_resources,
+               .enable = tc6393xb_ohci_enable,
+-              .suspend = tc6393xb_ohci_disable,
++              .suspend = tc6393xb_ohci_suspend,
+               .resume = tc6393xb_ohci_enable,
+               .disable = tc6393xb_ohci_disable,
+       },
diff --git a/queue-3.14/mmc-block-add-newline-to-sysfs-display-of-force_ro.patch b/queue-3.14/mmc-block-add-newline-to-sysfs-display-of-force_ro.patch
new file mode 100644 (file)
index 0000000..6cd0dff
--- /dev/null
@@ -0,0 +1,32 @@
+From 0031a98a85e9fca282624bfc887f9531b2768396 Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Mon, 22 Sep 2014 10:12:51 +0300
+Subject: mmc: block: add newline to sysfs display of force_ro
+
+From: Baruch Siach <baruch@tkos.co.il>
+
+commit 0031a98a85e9fca282624bfc887f9531b2768396 upstream.
+
+Make force_ro consistent with other sysfs entries.
+
+Fixes: 371a689f64b0d ('mmc: MMC boot partitions support')
+Cc: Andrei Warkentin <andrey.warkentin@gmail.com>
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/card/block.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/mmc/card/block.c
++++ b/drivers/mmc/card/block.c
+@@ -260,7 +260,7 @@ static ssize_t force_ro_show(struct devi
+       int ret;
+       struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev));
+-      ret = snprintf(buf, PAGE_SIZE, "%d",
++      ret = snprintf(buf, PAGE_SIZE, "%d\n",
+                      get_disk_ro(dev_to_disk(dev)) ^
+                      md->read_only);
+       mmc_blk_put(md);
diff --git a/queue-3.14/mmc-dw_mmc-avoid-write-to-cdthrctl-on-older-versions.patch b/queue-3.14/mmc-dw_mmc-avoid-write-to-cdthrctl-on-older-versions.patch
new file mode 100644 (file)
index 0000000..d26e27b
--- /dev/null
@@ -0,0 +1,44 @@
+From 66dfd10173159cafa9cb0d39936b8daeaab8e3e0 Mon Sep 17 00:00:00 2001
+From: James Hogan <james.hogan@imgtec.com>
+Date: Mon, 17 Nov 2014 17:49:05 +0000
+Subject: mmc: dw_mmc: avoid write to CDTHRCTL on older versions
+
+From: James Hogan <james.hogan@imgtec.com>
+
+commit 66dfd10173159cafa9cb0d39936b8daeaab8e3e0 upstream.
+
+Commit f1d2736c8156 (mmc: dw_mmc: control card read threshold) added
+dw_mci_ctrl_rd_thld() with an unconditional write to the CDTHRCTL
+register at offset 0x100. However before version 240a, the FIFO region
+started at 0x100, so the write messes with the FIFO and completely
+breaks the driver.
+
+If the version id < 240A, return early from dw_mci_ctl_rd_thld() so as
+not to hit this problem.
+
+Fixes: f1d2736c8156 (mmc: dw_mmc: control card read threshold)
+Signed-off-by: James Hogan <james.hogan@imgtec.com>
+Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/host/dw_mmc.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/mmc/host/dw_mmc.c
++++ b/drivers/mmc/host/dw_mmc.c
+@@ -632,6 +632,13 @@ static void dw_mci_ctrl_rd_thld(struct d
+       WARN_ON(!(data->flags & MMC_DATA_READ));
++      /*
++       * CDTHRCTL doesn't exist prior to 240A (in fact that register offset is
++       * in the FIFO region, so we really shouldn't access it).
++       */
++      if (host->verid < DW_MMC_240A)
++              return;
++
+       if (host->timing != MMC_TIMING_MMC_HS200 &&
+           host->timing != MMC_TIMING_UHS_SDR104)
+               goto disable;
diff --git a/queue-3.14/mmc-sdhci-pci-o2micro-fix-dell-e5440-issue.patch b/queue-3.14/mmc-sdhci-pci-o2micro-fix-dell-e5440-issue.patch
new file mode 100644 (file)
index 0000000..f5efc38
--- /dev/null
@@ -0,0 +1,31 @@
+From 6380ea099cdd46d7377b6fbec0291cf2aa387bad Mon Sep 17 00:00:00 2001
+From: Peter Guo <peter.guo@bayhubtech.com>
+Date: Wed, 24 Sep 2014 04:29:04 +0200
+Subject: mmc: sdhci-pci-o2micro: Fix Dell E5440 issue
+
+From: Peter Guo <peter.guo@bayhubtech.com>
+
+commit 6380ea099cdd46d7377b6fbec0291cf2aa387bad upstream.
+
+Fix Dell E5440 when reboot Linux, can't find o2micro sd host chip issue.
+
+Fixes: 01acf6917aed (mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts)
+Signed-off-by: Peter Guo <peter.guo@bayhubtech.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/host/sdhci-pci-o2micro.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/mmc/host/sdhci-pci-o2micro.c
++++ b/drivers/mmc/host/sdhci-pci-o2micro.c
+@@ -88,8 +88,6 @@ void sdhci_pci_o2_fujin2_pci_init(struct
+               return;
+       scratch_32 &= ~((1 << 21) | (1 << 30));
+-      /* Set RTD3 function disabled */
+-      scratch_32 |= ((1 << 29) | (1 << 28));
+       pci_write_config_dword(chip->pdev, O2_SD_FUNC_REG3, scratch_32);
+       /* Set L1 Entrance Timer */