From: Greg Kroah-Hartman Date: Tue, 20 Jan 2015 09:09:56 +0000 (+0800) Subject: 3.18-stable patches X-Git-Tag: v3.10.66~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5cfae8cc10df4f66c88045cfefbce6c28fd38366;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches 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 --- 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 index 00000000000..543200cd974 --- /dev/null +++ b/queue-3.18/arm-dts-berlin-fix-io-clk-and-add-missing-core-clk-for.patch @@ -0,0 +1,34 @@ +From 96ed6046d3bf1113de3bdbd6dbb7f40e6d0ae0ef Mon Sep 17 00:00:00 2001 +From: Jisheng Zhang +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 + +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 +Signed-off-by: Sebastian Hesselbarth +Signed-off-by: Greg Kroah-Hartman + +--- + 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 = ; +- 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 index 00000000000..8c826d1b288 --- /dev/null +++ b/queue-3.18/bugon.cocci-fix-options-at-the-macro.patch @@ -0,0 +1,45 @@ +From 7426977c8efeaedf0a7ca00e1c1a5f52ef6b950f Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab +Date: Tue, 28 Oct 2014 15:18:24 -0200 +Subject: bugon.cocci: fix Options at the macro + +From: Mauro Carvalho Chehab + +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 [-o ] [--iso-file ] [options] +Options are: + --sp-file the semantic patch file + -o 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 +Acked-by: Julia Lawall +Tested-by: Wolfram Sang +Fixes: 5be1df66 (Coccinelle: Script to replace if and BUG with BUG_ON) +Signed-off-by: Michal Marek +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..fd920e92c34 --- /dev/null +++ b/queue-3.18/clk-at91-keep-slow-clk-enabled-to-prevent-system-hang.patch @@ -0,0 +1,81 @@ +From dca1a4b5ff6e2c25adeff366eb06270dadeab3db Mon Sep 17 00:00:00 2001 +From: Boris Brezillon +Date: Tue, 13 Jan 2015 15:44:06 +0100 +Subject: clk: at91: keep slow clk enabled to prevent system hang + +From: Boris Brezillon + +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 +Reported-by: Bo Shen +Signed-off-by: Michael Turquette +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b35f0182d3d --- /dev/null +++ b/queue-3.18/clk-berlin-bg2q-remove-non-exist-smemc-gate-clock.patch @@ -0,0 +1,32 @@ +From b71e8ecd57c8aae5b1815782c47b74ffe3efc09a Mon Sep 17 00:00:00 2001 +From: Jisheng Zhang +Date: Wed, 31 Dec 2014 16:57:52 +0800 +Subject: clk: berlin: bg2q: remove non-exist "smemc" gate clock + +From: Jisheng Zhang + +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 +Signed-off-by: Michael Turquette +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..a94673ecee7 --- /dev/null +++ b/queue-3.18/clk-don-t-try-to-use-a-struct-clk-after-it-could-have-been-freed.patch @@ -0,0 +1,43 @@ +From 10cdfe54dab034311c8e2fad9ba2dffbe616caa9 Mon Sep 17 00:00:00 2001 +From: Tomeu Vizoso +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 + +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 +Fixes: fcb0ee6a3d33 ("clk: Implement clk_unregister") +Reviewed-by: Stephen Boyd +Signed-off-by: Michael Turquette +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..918286302ec --- /dev/null +++ b/queue-3.18/clk-really-fix-deadlock-with-mmap_sem.patch @@ -0,0 +1,56 @@ +From 89f7e9de59bf3e3cda2e00de12c66db22675a7cf Mon Sep 17 00:00:00 2001 +From: Stephen Boyd +Date: Fri, 12 Dec 2014 15:04:16 -0800 +Subject: clk: Really fix deadlock with mmap_sem + +From: Stephen Boyd + +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 +Fixes: 6314b6796e3c "clk: Don't hold prepare_lock across debugfs creation" +Signed-off-by: Stephen Boyd +Reviewed-by: Thomas Gleixner +Signed-off-by: Michael Turquette +[mturquette@linaro.org: removed lockdep_assert] +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7319a5c778a --- /dev/null +++ b/queue-3.18/clk-rockchip-fix-rk3066-pll-lock-bit-location.patch @@ -0,0 +1,61 @@ +From 12551f0239b50c88352e3292dd7703382addbf5e Mon Sep 17 00:00:00 2001 +From: Heiko Stuebner +Date: Wed, 24 Dec 2014 14:31:06 +0100 +Subject: clk: rockchip: fix rk3066 pll lock bit location + +From: Heiko Stuebner + +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 +Fixes: 2c14736c75db ("clk: rockchip: add clock driver for rk3188 and rk3066 clocks") +Tested-by: FUKAUMI Naoki +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..13d4d992639 --- /dev/null +++ b/queue-3.18/clk-rockchip-fix-rk3288-cpuclk-core-dividers.patch @@ -0,0 +1,67 @@ +From 9880d4277f6aab6b21404c824f9d9c652ba518ac Mon Sep 17 00:00:00 2001 +From: Heiko Stuebner +Date: Thu, 18 Dec 2014 20:06:57 +0100 +Subject: clk: rockchip: fix rk3288 cpuclk core dividers + +From: Heiko Stuebner + +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 +Fixes: 0e5bdb3f9fa5 ("clk: rockchip: switch to using the new cpuclk type for armclk") +Signed-off-by: Heiko Stuebner +Reviewed-by: Doug Anderson +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..eff630f7b06 --- /dev/null +++ b/queue-3.18/clk-samsung-fix-double-add-of-syscore-ops-after-driver-rebind.patch @@ -0,0 +1,60 @@ +From c31844ffdbd4e73a16c66e9d7df8ec290ab4b159 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Wed, 26 Nov 2014 15:24:13 +0100 +Subject: clk: samsung: Fix double add of syscore ops after driver rebind + +From: Krzysztof Kozlowski + +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] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) +[ 1463.083046] [] (show_stack) from [] (dump_stack+0x70/0xbc) +[ 1463.090236] [] (dump_stack) from [] (warn_slowpath_common+0x74/0xb0) +[ 1463.098295] [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x30/0x40) +[ 1463.106962] [] (warn_slowpath_fmt) from [] (__list_add+0x8c/0xc0) +[ 1463.114760] [] (__list_add) from [] (register_syscore_ops+0x30/0x3c) +[ 1463.122819] [] (register_syscore_ops) from [] (exynos_audss_clk_probe+0x36c/0x460) +[ 1463.132091] [] (exynos_audss_clk_probe) from [] (platform_drv_probe+0x48/0xa4) +[ 1463.141013] [] (platform_drv_probe) from [] (driver_probe_device+0x13c/0x37c) +[ 1463.149852] [] (driver_probe_device) from [] (bind_store+0x90/0xe0) +[ 1463.157822] [] (bind_store) from [] (drv_attr_store+0x20/0x2c) +[ 1463.165363] [] (drv_attr_store) from [] (sysfs_kf_write+0x4c/0x50) +[ 1463.173252] [] (sysfs_kf_write) from [] (kernfs_fop_write+0xbc/0x198) +[ 1463.181395] [] (kernfs_fop_write) from [] (vfs_write+0xa0/0x1a8) +[ 1463.189104] [] (vfs_write) from [] (SyS_write+0x40/0x8c) +[ 1463.196122] [] (SyS_write) from [] (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 +Fixes: 1241ef94ccc3 ("clk: samsung: register audio subsystem clocks using common clock framework") +Signed-off-by: Sylwester Nawrocki +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..591256b69e8 --- /dev/null +++ b/queue-3.18/dm-fix-missed-error-code-if-.end_io-isn-t-implemented-by-target_type.patch @@ -0,0 +1,35 @@ +From 5164bece1673cdf04782f8ed3fba70743700f5da Mon Sep 17 00:00:00 2001 +From: zhendong chen +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 + +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 +Signed-off-by: Mike Snitzer +Fixes: 7eee4ae2db ("dm: disable WRITE SAME if it fails") +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..a078a9b8f69 --- /dev/null +++ b/queue-3.18/parisc-fix-out-of-register-compiler-error-in-ldcw-inline-assembler-function.patch @@ -0,0 +1,47 @@ +From 45db07382a5c78b0c43b3b0002b63757fb60e873 Mon Sep 17 00:00:00 2001 +From: John David Anglin +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 + +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 +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..c5f57dd17d0 --- /dev/null +++ b/queue-3.18/revert-clk-ppc-corenet-fix-section-mismatch-warning.patch @@ -0,0 +1,37 @@ +From 176a107b868781c8d6868454aea7d07e0b82d6b8 Mon Sep 17 00:00:00 2001 +From: Kevin Hao +Date: Wed, 3 Dec 2014 16:53:51 +0800 +Subject: Revert "clk: ppc-corenet: Fix Section mismatch warning" + +From: Kevin Hao + +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 +Acked-by: Scott Wood +Signed-off-by: Michael Turquette +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..f41e32f9429 --- /dev/null +++ b/queue-3.18/revert-mpt2sas-remove-phys-on-topology-change.patch @@ -0,0 +1,47 @@ +From 81a89c2d891b78695aa7e4cc0d5a7427785ae078 Mon Sep 17 00:00:00 2001 +From: Sreekanth Reddy +Date: Tue, 2 Dec 2014 20:58:46 +0530 +Subject: Revert "[SCSI] mpt2sas: Remove phys on topology change." + +From: Sreekanth Reddy + +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 +Reviewed-by: Tomas Henzl +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8b127a6eafc --- /dev/null +++ b/queue-3.18/revert-mpt3sas-remove-phys-on-topology-change.patch @@ -0,0 +1,47 @@ +From 2311ce4d9c91ed63a46e18f0378f3e406e7e888e Mon Sep 17 00:00:00 2001 +From: Sreekanth Reddy +Date: Tue, 2 Dec 2014 20:58:47 +0530 +Subject: Revert "[SCSI] mpt3sas: Remove phys on topology change" + +From: Sreekanth Reddy + +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 +Reviewed-by: Tomas Henzl +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..dc8f890261b --- /dev/null +++ b/queue-3.18/scsi-blacklist-rsoc-for-microsoft-iscsi-target-devices.patch @@ -0,0 +1,32 @@ +From 198a956a11b15b564ac06d1411881e215b587408 Mon Sep 17 00:00:00 2001 +From: "Martin K. Petersen" +Date: Wed, 3 Dec 2014 21:18:10 -0500 +Subject: scsi: blacklist RSOC for Microsoft iSCSI target devices + +From: "Martin K. Petersen" + +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 +Tested-by: Mike Christie +Reported-by: jazz@deti74.ru +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..fd2759dcdcb --- /dev/null +++ b/queue-3.18/scsi-fix-random-memory-corruption-with-scsi-mq-t10-pi.patch @@ -0,0 +1,42 @@ +From 120bb3e1e36da9c1ae6b978c825a28b944a5d7c5 Mon Sep 17 00:00:00 2001 +From: Tony Battersby +Date: Mon, 8 Dec 2014 17:20:52 -0500 +Subject: scsi: fix random memory corruption with scsi-mq + T10 PI + +From: Tony Battersby + +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 +Reviewed-by: Nicholas Bellinger +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7146f3f1ae3 --- /dev/null +++ b/queue-3.18/scsi-fix-regression-in-scsi_send_eh_cmnd.patch @@ -0,0 +1,58 @@ +From 511833acfc06c013d453e288f483c682c60ffbff Mon Sep 17 00:00:00 2001 +From: Alan Stern +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 + +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 +Reported-by: Андрей Аладьев +Tested-by: Андрей Аладьев +Fixes: ac61d19559349e205dad7b5122b281419aa74a82 +Acked-by: Hannes Reinecke +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7cff2db68f9 --- /dev/null +++ b/queue-3.18/serial-fix-parisc-boot-hang.patch @@ -0,0 +1,35 @@ +From 68ed7e1c3d236e9e1e60ed6cae22f2c1c4ba2952 Mon Sep 17 00:00:00 2001 +From: James Bottomley +Date: Fri, 2 Jan 2015 10:05:13 -0800 +Subject: serial: fix parisc boot hang + +From: James Bottomley + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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)); diff --git a/queue-3.18/series b/queue-3.18/series index 108a067eeee..881bd7c598b 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -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