]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jan 2015 09:09:56 +0000 (17:09 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jan 2015 09:09:56 +0000 (17:09 +0800)
added patches:
arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch
bugon.cocci-fix-options-at-the-macro.patch
clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch
clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch
clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch
clk-really-fix-deadlock-with-mmap_sem.patch
clk-rockchip-fix-rk3066-pll-lock-bit-location.patch
clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch
clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch
dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch
parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch
revert-clk-ppc-corenet-fix-section-mismatch-warning.patch
revert-mpt2sas-remove-phys-on-topology-change.patch
revert-mpt3sas-remove-phys-on-topology-change.patch
scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch
scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch
scsi-fix-regression-in-scsi_send_eh_cmnd.patch
serial-fix-parisc-boot-hang.patch

19 files changed:
queue-3.18/arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch [new file with mode: 0644]
queue-3.18/bugon.cocci-fix-options-at-the-macro.patch [new file with mode: 0644]
queue-3.18/clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch [new file with mode: 0644]
queue-3.18/clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch [new file with mode: 0644]
queue-3.18/clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch [new file with mode: 0644]
queue-3.18/clk-really-fix-deadlock-with-mmap_sem.patch [new file with mode: 0644]
queue-3.18/clk-rockchip-fix-rk3066-pll-lock-bit-location.patch [new file with mode: 0644]
queue-3.18/clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch [new file with mode: 0644]
queue-3.18/clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch [new file with mode: 0644]
queue-3.18/dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch [new file with mode: 0644]
queue-3.18/parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch [new file with mode: 0644]
queue-3.18/revert-clk-ppc-corenet-fix-section-mismatch-warning.patch [new file with mode: 0644]
queue-3.18/revert-mpt2sas-remove-phys-on-topology-change.patch [new file with mode: 0644]
queue-3.18/revert-mpt3sas-remove-phys-on-topology-change.patch [new file with mode: 0644]
queue-3.18/scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch [new file with mode: 0644]
queue-3.18/scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch [new file with mode: 0644]
queue-3.18/scsi-fix-regression-in-scsi_send_eh_cmnd.patch [new file with mode: 0644]
queue-3.18/serial-fix-parisc-boot-hang.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch b/queue-3.18/arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch
new file mode 100644 (file)
index 0000000..543200c
--- /dev/null
@@ -0,0 +1,34 @@
+From 96ed6046d3bf1113de3bdbd6dbb7f40e6d0ae0ef Mon Sep 17 00:00:00 2001
+From: Jisheng Zhang <jszhang@marvell.com>
+Date: Wed, 31 Dec 2014 16:57:50 +0800
+Subject: ARM: dts: berlin: fix io clk and add missing core clk for
+ BG2Q sdhci2 host
+
+From: Jisheng Zhang <jszhang@marvell.com>
+
+commit 96ed6046d3bf1113de3bdbd6dbb7f40e6d0ae0ef upstream.
+
+On BG2Q, the sdhci2 host uses nfcecc for "io" clk and nfc for "core" clk.
+The shdci2 can't work without this patch due to the "core" clk is gated.
+
+Fixes: 0d859a6a9d14 ("ARM: dts: berlin: add the SDHCI nodes for the BG2Q")
+Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
+Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/boot/dts/berlin2q.dtsi |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/berlin2q.dtsi
++++ b/arch/arm/boot/dts/berlin2q.dtsi
+@@ -83,7 +83,8 @@
+                       compatible = "mrvl,pxav3-mmc";
+                       reg = <0xab1000 0x200>;
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+-                      clocks = <&chip CLKID_SDIO1XIN>;
++                      clocks = <&chip CLKID_NFC_ECC>, <&chip CLKID_NFC>;
++                      clock-names = "io", "core";
+                       status = "disabled";
+               };
diff --git a/queue-3.18/bugon.cocci-fix-options-at-the-macro.patch b/queue-3.18/bugon.cocci-fix-options-at-the-macro.patch
new file mode 100644 (file)
index 0000000..8c826d1
--- /dev/null
@@ -0,0 +1,45 @@
+From 7426977c8efeaedf0a7ca00e1c1a5f52ef6b950f Mon Sep 17 00:00:00 2001
+From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+Date: Tue, 28 Oct 2014 15:18:24 -0200
+Subject: bugon.cocci: fix Options at the macro
+
+From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+
+commit 7426977c8efeaedf0a7ca00e1c1a5f52ef6b950f upstream.
+
+The comma after --no-includes makes coccinelle to not run the script:
+
+/usr/bin/spatch -D report --very-quiet --no-show-diff --cocci-file ./scripts/coccinelle/misc/bugon.cocci --no-includes, --include-headers --patch . --dir drivers/media/platform/coda/ -I ./arch/x86/include -I arch/x86/include/generated -I include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi -I ./include/uapi -I include/generated/uapi -I ./include/linux/kconfig.h
+Usage: spatch.opt --sp-file <SP> <infile> [-o <outfile>] [--iso-file <iso>] [options]
+Options are:
+  --sp-file                    <file> the semantic patch file
+  -o                           <file> the output file
+  --in-place                   do the modification on the file directly
+  --backup-suffix              suffix to use when making a backup for inplace
+...
+
+At least with Fedora 20 coccinelle package:
+       coccinelle-1.0.0-0.rc20.1.fc21.x86_64
+
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+Acked-by: Julia Lawall <julia.lawall@lip6.fr>
+Tested-by: Wolfram Sang <wsa@the-dreams.de>
+Fixes: 5be1df66 (Coccinelle: Script to replace if and BUG with BUG_ON)
+Signed-off-by: Michal Marek <mmarek@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ scripts/coccinelle/misc/bugon.cocci |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/scripts/coccinelle/misc/bugon.cocci
++++ b/scripts/coccinelle/misc/bugon.cocci
+@@ -8,7 +8,7 @@
+ // Confidence: High
+ // Copyright: (C) 2014 Himangi Saraogi.  GPLv2.
+ // Comments:
+-// Options: --no-includes, --include-headers
++// Options: --no-includes --include-headers
+ virtual patch
+ virtual context
diff --git a/queue-3.18/clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch b/queue-3.18/clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch
new file mode 100644 (file)
index 0000000..fd920e9
--- /dev/null
@@ -0,0 +1,81 @@
+From dca1a4b5ff6e2c25adeff366eb06270dadeab3db Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Tue, 13 Jan 2015 15:44:06 +0100
+Subject: clk: at91: keep slow clk enabled to prevent system hang
+
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+
+commit dca1a4b5ff6e2c25adeff366eb06270dadeab3db upstream.
+
+All slow clk users are not properly claiming it (get + prepare + enable)
+before using it.
+If all users properly claiming this clock release it, the clock is
+disabled, but faulty users still depends on it, and the system hangs.
+
+This fix prevents the slow clock from being disabled, and should solve the
+hanging issue, but offending drivers should be patched to properly claim
+this clock.
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Reported-by: Bo Shen <voice.shen@atmel.com>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/at91/clk-slow.c |   27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+--- a/drivers/clk/at91/clk-slow.c
++++ b/drivers/clk/at91/clk-slow.c
+@@ -70,6 +70,7 @@ struct clk_sam9x5_slow {
+ #define to_clk_sam9x5_slow(hw) container_of(hw, struct clk_sam9x5_slow, hw)
++static struct clk *slow_clk;
+ static int clk_slow_osc_prepare(struct clk_hw *hw)
+ {
+@@ -357,6 +358,8 @@ at91_clk_register_sam9x5_slow(void __iom
+       clk = clk_register(NULL, &slowck->hw);
+       if (IS_ERR(clk))
+               kfree(slowck);
++      else
++              slow_clk = clk;
+       return clk;
+ }
+@@ -433,6 +436,8 @@ at91_clk_register_sam9260_slow(struct at
+       clk = clk_register(NULL, &slowck->hw);
+       if (IS_ERR(clk))
+               kfree(slowck);
++      else
++              slow_clk = clk;
+       return clk;
+ }
+@@ -465,3 +470,25 @@ void __init of_at91sam9260_clk_slow_setu
+       of_clk_add_provider(np, of_clk_src_simple_get, clk);
+ }
++
++/*
++ * FIXME: All slow clk users are not properly claiming it (get + prepare +
++ * enable) before using it.
++ * If all users properly claiming this clock decide that they don't need it
++ * anymore (or are removed), it is disabled while faulty users are still
++ * requiring it, and the system hangs.
++ * Prevent this clock from being disabled until all users are properly
++ * requesting it.
++ * Once this is done we should remove this function and the slow_clk variable.
++ */
++static int __init of_at91_clk_slow_retain(void)
++{
++      if (!slow_clk)
++              return 0;
++
++      __clk_get(slow_clk);
++      clk_prepare_enable(slow_clk);
++
++      return 0;
++}
++arch_initcall(of_at91_clk_slow_retain);
diff --git a/queue-3.18/clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch b/queue-3.18/clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch
new file mode 100644 (file)
index 0000000..b35f018
--- /dev/null
@@ -0,0 +1,32 @@
+From b71e8ecd57c8aae5b1815782c47b74ffe3efc09a Mon Sep 17 00:00:00 2001
+From: Jisheng Zhang <jszhang@marvell.com>
+Date: Wed, 31 Dec 2014 16:57:52 +0800
+Subject: clk: berlin: bg2q: remove non-exist "smemc" gate clock
+
+From: Jisheng Zhang <jszhang@marvell.com>
+
+commit b71e8ecd57c8aae5b1815782c47b74ffe3efc09a upstream.
+
+The "smemc" clock is removed on BG2Q SoCs. In fact, bit19 of clkenable
+register is for nfc. Current code use bit19 for non-exist "smemc"
+incorrectly, this prevents eMMC from working due to the sdhci's
+"core" clk is still gated.
+
+Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/berlin/bg2q.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/clk/berlin/bg2q.c
++++ b/drivers/clk/berlin/bg2q.c
+@@ -285,7 +285,6 @@ static const struct berlin2_gate_data bg
+       { "pbridge",    "perif",        15, CLK_IGNORE_UNUSED },
+       { "sdio",       "perif",        16, CLK_IGNORE_UNUSED },
+       { "nfc",        "perif",        18 },
+-      { "smemc",      "perif",        19 },
+       { "pcie",       "perif",        22 },
+ };
diff --git a/queue-3.18/clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch b/queue-3.18/clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch
new file mode 100644 (file)
index 0000000..a94673e
--- /dev/null
@@ -0,0 +1,43 @@
+From 10cdfe54dab034311c8e2fad9ba2dffbe616caa9 Mon Sep 17 00:00:00 2001
+From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Tue, 2 Dec 2014 08:54:19 +0100
+Subject: clk: Don't try to use a struct clk* after it could have been freed
+
+From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+
+commit 10cdfe54dab034311c8e2fad9ba2dffbe616caa9 upstream.
+
+As __clk_release could call kfree on clk and then we wouldn't have a safe way
+of getting the module that owns the clock.
+
+Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Fixes: fcb0ee6a3d33 ("clk: Implement clk_unregister")
+Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/clk.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/clk/clk.c
++++ b/drivers/clk/clk.c
+@@ -2274,14 +2274,17 @@ int __clk_get(struct clk *clk)
+ void __clk_put(struct clk *clk)
+ {
++      struct module *owner;
++
+       if (!clk || WARN_ON_ONCE(IS_ERR(clk)))
+               return;
+       clk_prepare_lock();
++      owner = clk->owner;
+       kref_put(&clk->ref, __clk_release);
+       clk_prepare_unlock();
+-      module_put(clk->owner);
++      module_put(owner);
+ }
+ /***        clk rate change notifiers        ***/
diff --git a/queue-3.18/clk-really-fix-deadlock-with-mmap_sem.patch b/queue-3.18/clk-really-fix-deadlock-with-mmap_sem.patch
new file mode 100644 (file)
index 0000000..9182863
--- /dev/null
@@ -0,0 +1,56 @@
+From 89f7e9de59bf3e3cda2e00de12c66db22675a7cf Mon Sep 17 00:00:00 2001
+From: Stephen Boyd <sboyd@codeaurora.org>
+Date: Fri, 12 Dec 2014 15:04:16 -0800
+Subject: clk: Really fix deadlock with mmap_sem
+
+From: Stephen Boyd <sboyd@codeaurora.org>
+
+commit 89f7e9de59bf3e3cda2e00de12c66db22675a7cf upstream.
+
+Commit 6314b6796e3c (clk: Don't hold prepare_lock across debugfs
+creation, 2014-09-04) forgot to update one place where we hold
+the prepare_lock while creating debugfs directories. This means
+we still have the chance of a deadlock that the commit was trying
+to fix. Actually fix it by moving the debugfs creation outside
+the prepare_lock.
+
+Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Fixes: 6314b6796e3c "clk: Don't hold prepare_lock across debugfs creation"
+Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+[mturquette@linaro.org: removed lockdep_assert]
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/clk.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/clk/clk.c
++++ b/drivers/clk/clk.c
+@@ -240,7 +240,6 @@ static const struct file_operations clk_
+       .release        = single_release,
+ };
+-/* caller must hold prepare_lock */
+ static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
+ {
+       struct dentry *d;
+@@ -1944,7 +1943,6 @@ int __clk_init(struct device *dev, struc
+       else
+               clk->rate = 0;
+-      clk_debug_register(clk);
+       /*
+        * walk the list of orphan clocks and reparent any that are children of
+        * this clock
+@@ -1979,6 +1977,9 @@ int __clk_init(struct device *dev, struc
+ out:
+       clk_prepare_unlock();
++      if (!ret)
++              clk_debug_register(clk);
++
+       return ret;
+ }
diff --git a/queue-3.18/clk-rockchip-fix-rk3066-pll-lock-bit-location.patch b/queue-3.18/clk-rockchip-fix-rk3066-pll-lock-bit-location.patch
new file mode 100644 (file)
index 0000000..7319a5c
--- /dev/null
@@ -0,0 +1,61 @@
+From 12551f0239b50c88352e3292dd7703382addbf5e Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko@sntech.de>
+Date: Wed, 24 Dec 2014 14:31:06 +0100
+Subject: clk: rockchip: fix rk3066 pll lock bit location
+
+From: Heiko Stuebner <heiko@sntech.de>
+
+commit 12551f0239b50c88352e3292dd7703382addbf5e upstream.
+
+The bit locations indicating the locking status of the plls on rk3066 are
+shifted by one to the right when compared to the rk3188, bits [7:4] instead
+of [8:5] on the rk3188, thus indicating the locking state of the wrong pll
+or a completely different information in case of the gpll.
+
+The recently introduced pll init code exposed that problem on some rk3066
+boards when it tried to bring the boot-pll value in line with the value
+from the rate table.
+
+Fix this by defining separate pll definitions for rk3066 with the correct
+locking indices.
+
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Fixes: 2c14736c75db ("clk: rockchip: add clock driver for rk3188 and rk3066 clocks")
+Tested-by: FUKAUMI Naoki <naobsd@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/rockchip/clk-rk3188.c |   15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+--- a/drivers/clk/rockchip/clk-rk3188.c
++++ b/drivers/clk/rockchip/clk-rk3188.c
+@@ -210,6 +210,17 @@ PNAME(mux_sclk_hsadc_p)           = { "hsadc_src"
+ PNAME(mux_mac_p)              = { "gpll", "dpll" };
+ PNAME(mux_sclk_macref_p)      = { "mac_src", "ext_rmii" };
++static struct rockchip_pll_clock rk3066_pll_clks[] __initdata = {
++      [apll] = PLL(pll_rk3066, PLL_APLL, "apll", mux_pll_p, 0, RK2928_PLL_CON(0),
++                   RK2928_MODE_CON, 0, 5, 0, rk3188_pll_rates),
++      [dpll] = PLL(pll_rk3066, PLL_DPLL, "dpll", mux_pll_p, 0, RK2928_PLL_CON(4),
++                   RK2928_MODE_CON, 4, 4, 0, NULL),
++      [cpll] = PLL(pll_rk3066, PLL_CPLL, "cpll", mux_pll_p, 0, RK2928_PLL_CON(8),
++                   RK2928_MODE_CON, 8, 6, ROCKCHIP_PLL_SYNC_RATE, rk3188_pll_rates),
++      [gpll] = PLL(pll_rk3066, PLL_GPLL, "gpll", mux_pll_p, 0, RK2928_PLL_CON(12),
++                   RK2928_MODE_CON, 12, 7, ROCKCHIP_PLL_SYNC_RATE, rk3188_pll_rates),
++};
++
+ static struct rockchip_pll_clock rk3188_pll_clks[] __initdata = {
+       [apll] = PLL(pll_rk3066, PLL_APLL, "apll", mux_pll_p, 0, RK2928_PLL_CON(0),
+                    RK2928_MODE_CON, 0, 6, rk3188_pll_rates),
+@@ -742,8 +753,8 @@ static void __init rk3188_common_clk_ini
+ static void __init rk3066a_clk_init(struct device_node *np)
+ {
+       rk3188_common_clk_init(np);
+-      rockchip_clk_register_plls(rk3188_pll_clks,
+-                                 ARRAY_SIZE(rk3188_pll_clks),
++      rockchip_clk_register_plls(rk3066_pll_clks,
++                                 ARRAY_SIZE(rk3066_pll_clks),
+                                  RK3066_GRF_SOC_STATUS);
+       rockchip_clk_register_branches(rk3066a_clk_branches,
+                                 ARRAY_SIZE(rk3066a_clk_branches));
diff --git a/queue-3.18/clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch b/queue-3.18/clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch
new file mode 100644 (file)
index 0000000..13d4d99
--- /dev/null
@@ -0,0 +1,67 @@
+From 9880d4277f6aab6b21404c824f9d9c652ba518ac Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko@sntech.de>
+Date: Thu, 18 Dec 2014 20:06:57 +0100
+Subject: clk: rockchip: fix rk3288 cpuclk core dividers
+
+From: Heiko Stuebner <heiko@sntech.de>
+
+commit 9880d4277f6aab6b21404c824f9d9c652ba518ac upstream.
+
+Commit 0e5bdb3f9fa5 (clk: rockchip: switch to using the new cpuclk type
+for armclk) didn't take into account that the divider used on rk3288
+are of the (n+1) type.
+
+The rk3066 and rk3188 socs use more complex divider types making it
+necessary for the list-elements to be the real register-values to write.
+
+Therefore reduce divider values in the table accordingly so that they
+really are the values that should be written to the registers and match
+the dividers actually specified for the rk3288.
+
+Reported-by: Sonny Rao <sonnyrao@chromium.org>
+Fixes: 0e5bdb3f9fa5 ("clk: rockchip: switch to using the new cpuclk type for armclk")
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Reviewed-by: Doug Anderson <dianders@chromium.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/rockchip/clk-rk3288.c |   28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+--- a/drivers/clk/rockchip/clk-rk3288.c
++++ b/drivers/clk/rockchip/clk-rk3288.c
+@@ -142,20 +142,20 @@ struct rockchip_pll_rate_table rk3288_pl
+       }
+ static struct rockchip_cpuclk_rate_table rk3288_cpuclk_rates[] __initdata = {
+-      RK3288_CPUCLK_RATE(1800000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1704000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1608000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1512000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1416000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1200000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE(1008000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 816000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 696000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 600000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 408000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 312000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 216000000, 2, 4, 2, 4, 4),
+-      RK3288_CPUCLK_RATE( 126000000, 2, 4, 2, 4, 4),
++      RK3288_CPUCLK_RATE(1800000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1704000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1608000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1512000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1416000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1200000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE(1008000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 816000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 696000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 600000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 408000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 312000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 216000000, 1, 3, 1, 3, 3),
++      RK3288_CPUCLK_RATE( 126000000, 1, 3, 1, 3, 3),
+ };
+ static const struct rockchip_cpuclk_reg_data rk3288_cpuclk_data = {
diff --git a/queue-3.18/clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch b/queue-3.18/clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch
new file mode 100644 (file)
index 0000000..eff630f
--- /dev/null
@@ -0,0 +1,60 @@
+From c31844ffdbd4e73a16c66e9d7df8ec290ab4b159 Mon Sep 17 00:00:00 2001
+From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
+Date: Wed, 26 Nov 2014 15:24:13 +0100
+Subject: clk: samsung: Fix double add of syscore ops after driver rebind
+
+From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
+
+commit c31844ffdbd4e73a16c66e9d7df8ec290ab4b159 upstream.
+
+During driver unbind the syscore ops were not unregistered which lead to
+double add on syscore list:
+
+$ echo "3810000.audss-clock-controller" > /sys/bus/platform/drivers/exynos-audss-clk/unbind
+$ echo "3810000.audss-clock-controller" > /sys/bus/platform/drivers/exynos-audss-clk/bind
+[ 1463.044061] ------------[ cut here ]------------
+[ 1463.047255] WARNING: CPU: 0 PID: 1 at lib/list_debug.c:36 __list_add+0x8c/0xc0()
+[ 1463.054613] list_add double add: new=c06e52c0, prev=c06e52c0, next=c06d5f84.
+[ 1463.061625] Modules linked in:
+[ 1463.064623] CPU: 0 PID: 1 Comm: bash Tainted: G        W      3.18.0-rc5-next-20141121-00005-ga8fab06eab42-dirty #1022
+[ 1463.075338] [<c0014e2c>] (unwind_backtrace) from [<c0011d80>] (show_stack+0x10/0x14)
+[ 1463.083046] [<c0011d80>] (show_stack) from [<c048bb70>] (dump_stack+0x70/0xbc)
+[ 1463.090236] [<c048bb70>] (dump_stack) from [<c00233d4>] (warn_slowpath_common+0x74/0xb0)
+[ 1463.098295] [<c00233d4>] (warn_slowpath_common) from [<c00234a4>] (warn_slowpath_fmt+0x30/0x40)
+[ 1463.106962] [<c00234a4>] (warn_slowpath_fmt) from [<c020fe80>] (__list_add+0x8c/0xc0)
+[ 1463.114760] [<c020fe80>] (__list_add) from [<c0282094>] (register_syscore_ops+0x30/0x3c)
+[ 1463.122819] [<c0282094>] (register_syscore_ops) from [<c0392f20>] (exynos_audss_clk_probe+0x36c/0x460)
+[ 1463.132091] [<c0392f20>] (exynos_audss_clk_probe) from [<c0283084>] (platform_drv_probe+0x48/0xa4)
+[ 1463.141013] [<c0283084>] (platform_drv_probe) from [<c0281a14>] (driver_probe_device+0x13c/0x37c)
+[ 1463.149852] [<c0281a14>] (driver_probe_device) from [<c0280560>] (bind_store+0x90/0xe0)
+[ 1463.157822] [<c0280560>] (bind_store) from [<c027fd10>] (drv_attr_store+0x20/0x2c)
+[ 1463.165363] [<c027fd10>] (drv_attr_store) from [<c0143898>] (sysfs_kf_write+0x4c/0x50)
+[ 1463.173252] [<c0143898>] (sysfs_kf_write) from [<c0142c80>] (kernfs_fop_write+0xbc/0x198)
+[ 1463.181395] [<c0142c80>] (kernfs_fop_write) from [<c00e2be0>] (vfs_write+0xa0/0x1a8)
+[ 1463.189104] [<c00e2be0>] (vfs_write) from [<c00e2f00>] (SyS_write+0x40/0x8c)
+[ 1463.196122] [<c00e2f00>] (SyS_write) from [<c000f2a0>] (ret_fast_syscall+0x0/0x48)
+[ 1463.203655] ---[ end trace 08f6710c9bc8d8f3 ]---
+[ 1463.208244] exynos-audss-clk 3810000.audss-clock-controller: setup completed
+
+Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
+Fixes: 1241ef94ccc3 ("clk: samsung: register audio subsystem clocks using common clock framework")
+Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/samsung/clk-exynos-audss.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/clk/samsung/clk-exynos-audss.c
++++ b/drivers/clk/samsung/clk-exynos-audss.c
+@@ -210,6 +210,10 @@ static int exynos_audss_clk_remove(struc
+ {
+       int i;
++#ifdef CONFIG_PM_SLEEP
++      unregister_syscore_ops(&exynos_audss_clk_syscore_ops);
++#endif
++
+       of_clk_del_provider(pdev->dev.of_node);
+       for (i = 0; i < clk_data.clk_num; i++) {
diff --git a/queue-3.18/dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch b/queue-3.18/dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch
new file mode 100644 (file)
index 0000000..591256b
--- /dev/null
@@ -0,0 +1,35 @@
+From 5164bece1673cdf04782f8ed3fba70743700f5da Mon Sep 17 00:00:00 2001
+From: zhendong chen <alex.chen@huawei.com>
+Date: Wed, 17 Dec 2014 14:37:04 +0800
+Subject: dm: fix missed error code if .end_io isn't implemented by target_type
+
+From: zhendong chen <alex.chen@huawei.com>
+
+commit 5164bece1673cdf04782f8ed3fba70743700f5da upstream.
+
+In bio-based DM's clone_endio(), when target_type doesn't implement
+.end_io (e.g. linear) r will be always be initialized 0.  So if a
+WRITE SAME bio fails WRITE SAME will not be disabled as intended.
+
+Fix this by initializing r to error, rather than 0, in clone_endio().
+
+Signed-off-by: Alex Chen <alex.chen@huawei.com>
+Signed-off-by: Mike Snitzer <snitzer@redhat.com>
+Fixes: 7eee4ae2db ("dm: disable WRITE SAME if it fails")
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/md/dm.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -899,7 +899,7 @@ static void disable_write_same(struct ma
+ static void clone_endio(struct bio *bio, int error)
+ {
+-      int r = 0;
++      int r = error;
+       struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
+       struct dm_io *io = tio->io;
+       struct mapped_device *md = tio->io->md;
diff --git a/queue-3.18/parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch b/queue-3.18/parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch
new file mode 100644 (file)
index 0000000..a078a9b
--- /dev/null
@@ -0,0 +1,47 @@
+From 45db07382a5c78b0c43b3b0002b63757fb60e873 Mon Sep 17 00:00:00 2001
+From: John David Anglin <dave.anglin@bell.net>
+Date: Sun, 14 Dec 2014 10:49:11 -0500
+Subject: parisc: fix out-of-register compiler error in ldcw inline assembler function
+
+From: John David Anglin <dave.anglin@bell.net>
+
+commit 45db07382a5c78b0c43b3b0002b63757fb60e873 upstream.
+
+The __ldcw macro has a problem when its argument needs to be reloaded from
+memory. The output memory operand and the input register operand both need to
+be reloaded using a register in class R1_REGS when generating 64-bit code.
+This fails because there's only a single register in the class. Instead, use a
+memory clobber. This also makes the __ldcw macro a compiler memory barrier.
+
+Signed-off-by: John David Anglin <dave.anglin@bell.net>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/parisc/include/asm/ldcw.h |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/arch/parisc/include/asm/ldcw.h
++++ b/arch/parisc/include/asm/ldcw.h
+@@ -33,11 +33,18 @@
+ #endif /*!CONFIG_PA20*/
+-/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
++/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.
++   We don't explicitly expose that "*a" may be written as reload
++   fails to find a register in class R1_REGS when "a" needs to be
++   reloaded when generating 64-bit PIC code.  Instead, we clobber
++   memory to indicate to the compiler that the assembly code reads
++   or writes to items other than those listed in the input and output
++   operands.  This may pessimize the code somewhat but __ldcw is
++   usually used within code blocks surrounded by memory barriors.  */
+ #define __ldcw(a) ({                                          \
+       unsigned __ret;                                         \
+-      __asm__ __volatile__(__LDCW " 0(%2),%0"                 \
+-              : "=r" (__ret), "+m" (*(a)) : "r" (a));         \
++      __asm__ __volatile__(__LDCW " 0(%1),%0"                 \
++              : "=r" (__ret) : "r" (a) : "memory");           \
+       __ret;                                                  \
+ })
diff --git a/queue-3.18/revert-clk-ppc-corenet-fix-section-mismatch-warning.patch b/queue-3.18/revert-clk-ppc-corenet-fix-section-mismatch-warning.patch
new file mode 100644 (file)
index 0000000..c5f57dd
--- /dev/null
@@ -0,0 +1,37 @@
+From 176a107b868781c8d6868454aea7d07e0b82d6b8 Mon Sep 17 00:00:00 2001
+From: Kevin Hao <haokexin@gmail.com>
+Date: Wed, 3 Dec 2014 16:53:51 +0800
+Subject: Revert "clk: ppc-corenet: Fix Section mismatch warning"
+
+From: Kevin Hao <haokexin@gmail.com>
+
+commit 176a107b868781c8d6868454aea7d07e0b82d6b8 upstream.
+
+This reverts commit da788acb28386aa896224e784954bb73c99ff26c.
+
+That commit tried to fix the section mismatch warning by moving the
+ppc_corenet_clk_driver struct to init section. This is definitely wrong
+because the kernel would free the memories occupied by this struct
+after boot while this driver is still registered in the driver core.
+The kernel would panic when accessing this driver struct.
+
+Signed-off-by: Kevin Hao <haokexin@gmail.com>
+Acked-by: Scott Wood <scottwood@freescale.com>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/clk-ppc-corenet.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/clk-ppc-corenet.c
++++ b/drivers/clk/clk-ppc-corenet.c
+@@ -291,7 +291,7 @@ static const struct of_device_id ppc_clk
+       {}
+ };
+-static struct platform_driver ppc_corenet_clk_driver __initdata = {
++static struct platform_driver ppc_corenet_clk_driver = {
+       .driver = {
+               .name = "ppc_corenet_clock",
+               .owner = THIS_MODULE,
diff --git a/queue-3.18/revert-mpt2sas-remove-phys-on-topology-change.patch b/queue-3.18/revert-mpt2sas-remove-phys-on-topology-change.patch
new file mode 100644 (file)
index 0000000..f41e32f
--- /dev/null
@@ -0,0 +1,47 @@
+From 81a89c2d891b78695aa7e4cc0d5a7427785ae078 Mon Sep 17 00:00:00 2001
+From: Sreekanth Reddy <sreekanth.reddy@avagotech.com>
+Date: Tue, 2 Dec 2014 20:58:46 +0530
+Subject: Revert "[SCSI] mpt2sas: Remove phys on topology change."
+
+From: Sreekanth Reddy <sreekanth.reddy@avagotech.com>
+
+commit 81a89c2d891b78695aa7e4cc0d5a7427785ae078 upstream.
+
+This reverts commit 3520f9c779bed098ca76dd3fb6377264301d57ed
+("mpt2sas: Remove phys on topology change")
+
+Reverting the previous mpt2sas drives patch changes,
+since we will observe below issue
+
+Issue:
+Drives connected Enclosure/Expander will unregister with
+SCSI Transport Layer, if any one remove and add expander
+cable with in DMD (Device Missing Delay) time period or
+even any one power-off and power-on the Enclosure with in
+the DMD period.
+
+Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/mpt2sas/mpt2sas_transport.c |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/scsi/mpt2sas/mpt2sas_transport.c
++++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c
+@@ -1006,12 +1006,9 @@ mpt2sas_transport_update_links(struct MP
+                   &mpt2sas_phy->remote_identify);
+               _transport_add_phy_to_an_existing_port(ioc, sas_node,
+                   mpt2sas_phy, mpt2sas_phy->remote_identify.sas_address);
+-      } else {
++      } else
+               memset(&mpt2sas_phy->remote_identify, 0 , sizeof(struct
+                   sas_identify));
+-              _transport_del_phy_from_an_existing_port(ioc, sas_node,
+-                  mpt2sas_phy);
+-      }
+       if (mpt2sas_phy->phy)
+               mpt2sas_phy->phy->negotiated_linkrate =
diff --git a/queue-3.18/revert-mpt3sas-remove-phys-on-topology-change.patch b/queue-3.18/revert-mpt3sas-remove-phys-on-topology-change.patch
new file mode 100644 (file)
index 0000000..8b127a6
--- /dev/null
@@ -0,0 +1,47 @@
+From 2311ce4d9c91ed63a46e18f0378f3e406e7e888e Mon Sep 17 00:00:00 2001
+From: Sreekanth Reddy <sreekanth.reddy@avagotech.com>
+Date: Tue, 2 Dec 2014 20:58:47 +0530
+Subject: Revert "[SCSI] mpt3sas: Remove phys on topology change"
+
+From: Sreekanth Reddy <sreekanth.reddy@avagotech.com>
+
+commit 2311ce4d9c91ed63a46e18f0378f3e406e7e888e upstream.
+
+This reverts commit 963ba22b90a955363644cd397b20226928eab976
+("mpt3sas: Remove phys on topology change")
+
+Reverting the previous mpt3sas drives patch changes,
+since we will observe below issue
+
+Issue:
+Drives connected Enclosure/Expander will unregister with
+SCSI Transport Layer, if any one remove and add expander
+cable with in DMD (Device Missing Delay) time period or
+even any one power-off and power-on the Enclosure with in
+the DMD period.
+
+Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/mpt3sas/mpt3sas_transport.c |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/scsi/mpt3sas/mpt3sas_transport.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_transport.c
+@@ -1003,12 +1003,9 @@ mpt3sas_transport_update_links(struct MP
+                   &mpt3sas_phy->remote_identify);
+               _transport_add_phy_to_an_existing_port(ioc, sas_node,
+                   mpt3sas_phy, mpt3sas_phy->remote_identify.sas_address);
+-      } else {
++      } else
+               memset(&mpt3sas_phy->remote_identify, 0 , sizeof(struct
+                   sas_identify));
+-              _transport_del_phy_from_an_existing_port(ioc, sas_node,
+-                  mpt3sas_phy);
+-      }
+       if (mpt3sas_phy->phy)
+               mpt3sas_phy->phy->negotiated_linkrate =
diff --git a/queue-3.18/scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch b/queue-3.18/scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch
new file mode 100644 (file)
index 0000000..dc8f890
--- /dev/null
@@ -0,0 +1,32 @@
+From 198a956a11b15b564ac06d1411881e215b587408 Mon Sep 17 00:00:00 2001
+From: "Martin K. Petersen" <martin.petersen@oracle.com>
+Date: Wed, 3 Dec 2014 21:18:10 -0500
+Subject: scsi: blacklist RSOC for Microsoft iSCSI target devices
+
+From: "Martin K. Petersen" <martin.petersen@oracle.com>
+
+commit 198a956a11b15b564ac06d1411881e215b587408 upstream.
+
+The Microsoft iSCSI target does not support REPORT SUPPORTED OPERATION
+CODES. Blacklist these devices so we don't attempt to send the command.
+
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Tested-by: Mike Christie <michaelc@cs.wisc.edu>
+Reported-by: jazz@deti74.ru
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/scsi_devinfo.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/scsi/scsi_devinfo.c
++++ b/drivers/scsi/scsi_devinfo.c
+@@ -211,6 +211,7 @@ static struct {
+       {"Medion", "Flash XL  MMC/SD", "2.6D", BLIST_FORCELUN},
+       {"MegaRAID", "LD", NULL, BLIST_FORCELUN},
+       {"MICROP", "4110", NULL, BLIST_NOTQ},
++      {"MSFT", "Virtual HD", NULL, BLIST_NO_RSOC},
+       {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN2},
+       {"nCipher", "Fastness Crypto", NULL, BLIST_FORCELUN},
+       {"NAKAMICH", "MJ-4.8S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
diff --git a/queue-3.18/scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch b/queue-3.18/scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch
new file mode 100644 (file)
index 0000000..fd2759d
--- /dev/null
@@ -0,0 +1,42 @@
+From 120bb3e1e36da9c1ae6b978c825a28b944a5d7c5 Mon Sep 17 00:00:00 2001
+From: Tony Battersby <tonyb@cybernetics.com>
+Date: Mon, 8 Dec 2014 17:20:52 -0500
+Subject: scsi: fix random memory corruption with scsi-mq + T10 PI
+
+From: Tony Battersby <tonyb@cybernetics.com>
+
+commit 120bb3e1e36da9c1ae6b978c825a28b944a5d7c5 upstream.
+
+This fixes random memory corruption triggered when all three of the
+following are true:
+
+* scsi-mq enabled
+* T10 Protection Information (DIF) enabled
+* SCSI host with sg_tablesize > SCSI_MAX_SG_SEGMENTS (128)
+
+The symptoms of this bug are unpredictable memory corruption, BUG()s,
+oopses, lockups, etc., any of which may appear to be completely
+unrelated to the root cause.
+
+Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
+Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/scsi_lib.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/scsi/scsi_lib.c
++++ b/drivers/scsi/scsi_lib.c
+@@ -1829,7 +1829,9 @@ static int scsi_mq_prep_fn(struct reques
+       if (scsi_host_get_prot(shost)) {
+               cmd->prot_sdb = (void *)sg +
+-                      shost->sg_tablesize * sizeof(struct scatterlist);
++                      min_t(unsigned int,
++                            shost->sg_tablesize, SCSI_MAX_SG_SEGMENTS) *
++                      sizeof(struct scatterlist);
+               memset(cmd->prot_sdb, 0, sizeof(struct scsi_data_buffer));
+               cmd->prot_sdb->table.sgl =
diff --git a/queue-3.18/scsi-fix-regression-in-scsi_send_eh_cmnd.patch b/queue-3.18/scsi-fix-regression-in-scsi_send_eh_cmnd.patch
new file mode 100644 (file)
index 0000000..7146f3f
--- /dev/null
@@ -0,0 +1,58 @@
+From 511833acfc06c013d453e288f483c682c60ffbff Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Fri, 21 Nov 2014 10:44:49 -0500
+Subject: SCSI: fix regression in scsi_send_eh_cmnd()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 511833acfc06c013d453e288f483c682c60ffbff upstream.
+
+Commit ac61d1955934 (scsi: set correct completion code in
+scsi_send_eh_cmnd()) introduced a bug.  It changed the stored return
+value from a queuecommand call, but it didn't take into account that
+the return value was used again later on.  This patch fixes the bug by
+changing the later usage.
+
+There is a big comment in the middle of scsi_send_eh_cmnd() which
+does a good job of explaining how the routine works.  But it mentions
+a "rtn = FAILURE" value that doesn't exist in the code.  This patch
+adjusts the code to match the comment (I assume the comment is right
+and the code is wrong).
+
+This fixes Bugzilla #88341.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: Андрей Аладьев <aladjev.andrew@gmail.com>
+Tested-by: Андрей Аладьев <aladjev.andrew@gmail.com>
+Fixes: ac61d19559349e205dad7b5122b281419aa74a82
+Acked-by: Hannes Reinecke <hare@suse.de>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/scsi_error.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/scsi_error.c
++++ b/drivers/scsi/scsi_error.c
+@@ -1027,7 +1027,7 @@ retry:
+               }
+               /* signal not to enter either branch of the if () below */
+               timeleft = 0;
+-              rtn = NEEDS_RETRY;
++              rtn = FAILED;
+       } else {
+               timeleft = wait_for_completion_timeout(&done, timeout);
+               rtn = SUCCESS;
+@@ -1067,7 +1067,7 @@ retry:
+                       rtn = FAILED;
+                       break;
+               }
+-      } else if (!rtn) {
++      } else if (rtn != FAILED) {
+               scsi_abort_eh_cmnd(scmd);
+               rtn = FAILED;
+       }
diff --git a/queue-3.18/serial-fix-parisc-boot-hang.patch b/queue-3.18/serial-fix-parisc-boot-hang.patch
new file mode 100644 (file)
index 0000000..7cff2db
--- /dev/null
@@ -0,0 +1,35 @@
+From 68ed7e1c3d236e9e1e60ed6cae22f2c1c4ba2952 Mon Sep 17 00:00:00 2001
+From: James Bottomley <JBottomley@Parallels.com>
+Date: Fri, 2 Jan 2015 10:05:13 -0800
+Subject: serial: fix parisc boot hang
+
+From: James Bottomley <JBottomley@Parallels.com>
+
+commit 68ed7e1c3d236e9e1e60ed6cae22f2c1c4ba2952 upstream.
+
+This is a partial revert of 2f2dafe (serial: serial_core.c: printk
+replacement) which gets us booting again.  The real problem seems to be
+the _emit path in early boot.  However, until we can root cause it, we
+need at least to get boot working.
+
+Fixes: 2f2dafe77df2c78e189a9fa6b1879dffd06ae5a1
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/serial/serial_core.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -2102,7 +2102,9 @@ uart_report_port(struct uart_driver *drv
+               break;
+       }
+-      dev_info(port->dev, "%s%d at %s (irq = %d, base_baud = %d) is a %s\n",
++      printk(KERN_INFO "%s%s%s%d at %s (irq = %d, base_baud = %d) is a %s\n",
++             port->dev ? dev_name(port->dev) : "",
++             port->dev ? ": " : "",
+              drv->dev_name,
+              drv->tty_driver->name_base + port->line,
+              address, port->irq, port->uartclk / 16, uart_type(port));
index 108a067eeee05bd11b23779d92feb9ba653ec140..881bd7c598b784d65505f52edc1d31ba0226e227 100644 (file)
@@ -78,3 +78,21 @@ iser-target-allocate-pi-contexts-dynamically.patch
 iser-target-fix-null-dereference-in-sw-mode-dif.patch
 iscsi-iser-target-expose-supported-protection-ops-according-to-t10_pi.patch
 revert-drm-i915-preserve-vgacntr-bits-from-the-bios.patch
+revert-mpt2sas-remove-phys-on-topology-change.patch
+revert-mpt3sas-remove-phys-on-topology-change.patch
+scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch
+scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch
+scsi-fix-regression-in-scsi_send_eh_cmnd.patch
+clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch
+clk-really-fix-deadlock-with-mmap_sem.patch
+clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch
+revert-clk-ppc-corenet-fix-section-mismatch-warning.patch
+clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch
+clk-rockchip-fix-rk3066-pll-lock-bit-location.patch
+clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch
+clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch
+arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch
+bugon.cocci-fix-options-at-the-macro.patch
+dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch
+parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch
+serial-fix-parisc-boot-hang.patch