From: Greg Kroah-Hartman Date: Sun, 25 Jan 2015 15:14:23 +0000 (+0800) Subject: 3.18-stable patches X-Git-Tag: v3.10.66~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9910b910d554eb910ab273230b391da71ac1c057;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: arm-clk-imx6q-fix-video-divider-for-rev-t0-1.0.patch arm-dts-berlin-add-broken-cd-and-set-bus-width-for-emmc-in.patch arm-dts-dra7-evm-fix-qspi-device-tree-partition-size.patch arm-dts-imx25-fix-the-spi1-clocks.patch arm-dts-imx51-babbage-fix-ulpi-phy-reset-modelling.patch arm-imx6q-drop-unnecessary-semicolon.patch arm-imx6sx-set-pll2-as-parent-of-qspi-clocks.patch arm-omap2plus_defconfig-use-config_cpufreq_dt.patch arm-omap5-dra7xx-enable-booting-secondary-cpu-in-hyp-mode.patch arm-omap5-dra7xx-fix-frequency-typos.patch arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch bus-omap_l3_noc-add-resume-hook-to-restore-context.patch bus-omap_l3_noc-correct-returning-irq_handled.patch can-kvaser_usb-don-t-free-packets-when-tight-on-urbs.patch can-kvaser_usb-don-t-send-a-reset_chip-for-non-existing-channels.patch can-kvaser_usb-reset-all-urb-tx-contexts-upon-channel-close.patch decompress_bunzip2-off-by-one-in-get_next_block.patch iio-ad799x-fix-ad7991-ad7995-ad7999-config-setup.patch input-elantech-support-new-ics-types-for-version-4.patch input-i8042-add-acer-aspire-7738-to-the-nomux-list.patch input-i8042-reset-keyboard-to-fix-elantech-touchpad-detection.patch kbuild-fix-removal-of-the-debian-directory.patch um-skip-futex_atomic_cmpxchg_inatomic-test.patch usb-ehci-fix-initialization-bug-in-iso_stream_schedule.patch usb-musb-stuff-leak-of-struct-usb_hcd.patch x86-um-actually-mark-system-call-tables-readonly.patch --- diff --git a/queue-3.18/arm-clk-imx6q-fix-video-divider-for-rev-t0-1.0.patch b/queue-3.18/arm-clk-imx6q-fix-video-divider-for-rev-t0-1.0.patch new file mode 100644 index 00000000000..5516eee99a3 --- /dev/null +++ b/queue-3.18/arm-clk-imx6q-fix-video-divider-for-rev-t0-1.0.patch @@ -0,0 +1,35 @@ +From 81ef447950bf0955aca46f4a7617d8ce435cf0ce Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Wed, 3 Dec 2014 15:03:51 -0800 +Subject: ARM: clk-imx6q: fix video divider for rev T0 1.0 + +From: Gary Bisson + +commit 81ef447950bf0955aca46f4a7617d8ce435cf0ce upstream. + +The post dividers do not work on i.MX6Q rev T0 1.0 so they must be fixed +to 1. As the table index was wrong, a divider a of 4 could still be +requested which implied the clock not to be set properly. This is the +root cause of the HDMI not working at high resolution on rev T0 1.0 of +the SoC. + +Signed-off-by: Gary Bisson +Cc: +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-imx/clk-imx6q.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/mach-imx/clk-imx6q.c ++++ b/arch/arm/mach-imx/clk-imx6q.c +@@ -144,7 +144,7 @@ static void __init imx6q_clocks_init(str + post_div_table[1].div = 1; + post_div_table[2].div = 1; + video_div_table[1].div = 1; +- video_div_table[2].div = 1; ++ video_div_table[3].div = 1; + } + + clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels)); diff --git a/queue-3.18/arm-dts-berlin-add-broken-cd-and-set-bus-width-for-emmc-in.patch b/queue-3.18/arm-dts-berlin-add-broken-cd-and-set-bus-width-for-emmc-in.patch new file mode 100644 index 00000000000..9d11ef1c143 --- /dev/null +++ b/queue-3.18/arm-dts-berlin-add-broken-cd-and-set-bus-width-for-emmc-in.patch @@ -0,0 +1,34 @@ +From 5adba7c2daaecccf377e7ed5a2996caedd5384f1 Mon Sep 17 00:00:00 2001 +From: Jisheng Zhang +Date: Wed, 31 Dec 2014 16:57:51 +0800 +Subject: ARM: dts: berlin: add broken-cd and set bus width for eMMC in + Marvell DMP DT + +From: Jisheng Zhang + +commit 5adba7c2daaecccf377e7ed5a2996caedd5384f1 upstream. + +There's no card detection for the eMMC, so this patch adds the missing +broken-cd property. This patch also sets bus width as 8 to add +MMC_CAP_8_BIT_DATA in the Host capabilities. + +Fixes: 3047086dfd56 ("ARM: dts: berlin: enable SD card reader and eMMC for the BG2Q DMP") +Signed-off-by: Jisheng Zhang +Signed-off-by: Sebastian Hesselbarth +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/arm/boot/dts/berlin2q-marvell-dmp.dts ++++ b/arch/arm/boot/dts/berlin2q-marvell-dmp.dts +@@ -30,6 +30,8 @@ + }; + + &sdhci2 { ++ broken-cd; ++ bus-width = <8>; + non-removable; + status = "okay"; + }; diff --git a/queue-3.18/arm-dts-dra7-evm-fix-qspi-device-tree-partition-size.patch b/queue-3.18/arm-dts-dra7-evm-fix-qspi-device-tree-partition-size.patch new file mode 100644 index 00000000000..d2f82d955a4 --- /dev/null +++ b/queue-3.18/arm-dts-dra7-evm-fix-qspi-device-tree-partition-size.patch @@ -0,0 +1,57 @@ +From 69d2626f97b7f017ee4416b7dc071e9499c2c944 Mon Sep 17 00:00:00 2001 +From: Mugunthan V N +Date: Mon, 5 Jan 2015 15:45:45 -0800 +Subject: ARM: dts: dra7-evm: fix qspi device tree partition size + +From: Mugunthan V N + +commit 69d2626f97b7f017ee4416b7dc071e9499c2c944 upstream. + +64KiB is allocated for qspi dtb partition which is not +sufficient, so updating the partition table size to 512KiB +for device tree partition. + +This also aligns the QSPI partition definitions between +kernel and U-Boot. + +Fixes: dc2dd5b8 ("ARM: dts: dra7: Add qspi device") + +Signed-off-by: Mugunthan V N +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/dra7-evm.dts | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/arch/arm/boot/dts/dra7-evm.dts ++++ b/arch/arm/boot/dts/dra7-evm.dts +@@ -399,23 +399,23 @@ + }; + partition@5 { + label = "QSPI.u-boot-spl-os"; +- reg = <0x00140000 0x00010000>; ++ reg = <0x00140000 0x00080000>; + }; + partition@6 { + label = "QSPI.u-boot-env"; +- reg = <0x00150000 0x00010000>; ++ reg = <0x001c0000 0x00010000>; + }; + partition@7 { + label = "QSPI.u-boot-env.backup1"; +- reg = <0x00160000 0x0010000>; ++ reg = <0x001d0000 0x0010000>; + }; + partition@8 { + label = "QSPI.kernel"; +- reg = <0x00170000 0x0800000>; ++ reg = <0x001e0000 0x0800000>; + }; + partition@9 { + label = "QSPI.file-system"; +- reg = <0x00970000 0x01690000>; ++ reg = <0x009e0000 0x01620000>; + }; + }; + }; diff --git a/queue-3.18/arm-dts-imx25-fix-the-spi1-clocks.patch b/queue-3.18/arm-dts-imx25-fix-the-spi1-clocks.patch new file mode 100644 index 00000000000..6a12d206771 --- /dev/null +++ b/queue-3.18/arm-dts-imx25-fix-the-spi1-clocks.patch @@ -0,0 +1,37 @@ +From 7a87e9cbc3a2f0ff0955815335e08c9862359130 Mon Sep 17 00:00:00 2001 +From: Fabio Estevam +Date: Fri, 5 Dec 2014 16:16:07 -0200 +Subject: ARM: dts: imx25: Fix the SPI1 clocks + +From: Fabio Estevam + +commit 7a87e9cbc3a2f0ff0955815335e08c9862359130 upstream. + +From Documentation/devicetree/bindings/clock/imx25-clock.txt: + + cspi1_ipg 78 + cspi2_ipg 79 + cspi3_ipg 80 + +, so fix the SPI1 clocks accordingly to avoid a kernel hang when trying to +access SPI1. + +Signed-off-by: Fabio Estevam +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/imx25.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/boot/dts/imx25.dtsi ++++ b/arch/arm/boot/dts/imx25.dtsi +@@ -162,7 +162,7 @@ + #size-cells = <0>; + compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; + reg = <0x43fa4000 0x4000>; +- clocks = <&clks 62>, <&clks 62>; ++ clocks = <&clks 78>, <&clks 78>; + clock-names = "ipg", "per"; + interrupts = <14>; + status = "disabled"; diff --git a/queue-3.18/arm-dts-imx51-babbage-fix-ulpi-phy-reset-modelling.patch b/queue-3.18/arm-dts-imx51-babbage-fix-ulpi-phy-reset-modelling.patch new file mode 100644 index 00000000000..899d33b17a3 --- /dev/null +++ b/queue-3.18/arm-dts-imx51-babbage-fix-ulpi-phy-reset-modelling.patch @@ -0,0 +1,89 @@ +From 7a9f0604bd56936b2b18f49824e0e392dc7878c3 Mon Sep 17 00:00:00 2001 +From: Fabio Estevam +Date: Mon, 5 Jan 2015 15:19:08 -0200 +Subject: ARM: dts: imx51-babbage: Fix ULPI PHY reset modelling + +From: Fabio Estevam + +commit 7a9f0604bd56936b2b18f49824e0e392dc7878c3 upstream. + +GPIO2_5 is the reset GPIO for the USB3317 ULPI PHY. Instead of modelling it as +a regulator, the correct approach is to use the 'reset_gpios' property of the +"usb-nop-xceiv" node. + +GPIO1_7 is the reset GPIO for the USB2517 USB hub. As we currently don't have +dt bindings to describe a HUB reset, let's keep using the regulator approach. + +Rename the regulator to 'reg_hub_reset' to better describe its function and bind +it with the USB host1 port instead. + +USB host support has been introduced by commit 9bf206a9d13be3 ("ARM: dts: +imx51-babbage: Add USB Host1 support"), which landed in 3.16 and it seems that +USB has only been functional due to previous bootloader initialization. + +With this patch applied we can get USB host to work without relying on the +bootloader. + +Signed-off-by: Fabio Estevam +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/imx51-babbage.dts | 22 +++++----------------- + 1 file changed, 5 insertions(+), 17 deletions(-) + +--- a/arch/arm/boot/dts/imx51-babbage.dts ++++ b/arch/arm/boot/dts/imx51-babbage.dts +@@ -127,24 +127,12 @@ + #address-cells = <1>; + #size-cells = <0>; + +- reg_usbh1_vbus: regulator@0 { +- compatible = "regulator-fixed"; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbh1reg>; +- reg = <0>; +- regulator-name = "usbh1_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>; +- enable-active-high; +- }; +- +- reg_usbotg_vbus: regulator@1 { ++ reg_hub_reset: regulator@0 { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbotgreg>; +- reg = <1>; +- regulator-name = "usbotg_vbus"; ++ reg = <0>; ++ regulator-name = "hub_reset"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>; +@@ -176,6 +164,7 @@ + reg = <0>; + clocks = <&clks IMX5_CLK_DUMMY>; + clock-names = "main_clk"; ++ reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; + }; + }; + }; +@@ -419,7 +408,7 @@ + &usbh1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbh1>; +- vbus-supply = <®_usbh1_vbus>; ++ vbus-supply = <®_hub_reset>; + fsl,usbphy = <&usbh1phy>; + phy_type = "ulpi"; + status = "okay"; +@@ -429,7 +418,6 @@ + dr_mode = "otg"; + disable-over-current; + phy_type = "utmi_wide"; +- vbus-supply = <®_usbotg_vbus>; + status = "okay"; + }; + diff --git a/queue-3.18/arm-imx6q-drop-unnecessary-semicolon.patch b/queue-3.18/arm-imx6q-drop-unnecessary-semicolon.patch new file mode 100644 index 00000000000..98ca49ed662 --- /dev/null +++ b/queue-3.18/arm-imx6q-drop-unnecessary-semicolon.patch @@ -0,0 +1,30 @@ +From d2a10a1727b3948019128e83162f22c65859f1fd Mon Sep 17 00:00:00 2001 +From: Dmitry Voytik +Date: Thu, 6 Nov 2014 22:46:20 +0400 +Subject: ARM: imx6q: drop unnecessary semicolon + +From: Dmitry Voytik + +commit d2a10a1727b3948019128e83162f22c65859f1fd upstream. + +Drop unnecessary semicolon after closing curly bracket. + +Signed-off-by: Dmitry Voytik +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-imx/clk-imx6q.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/mach-imx/clk-imx6q.c ++++ b/arch/arm/mach-imx/clk-imx6q.c +@@ -145,7 +145,7 @@ static void __init imx6q_clocks_init(str + post_div_table[2].div = 1; + video_div_table[1].div = 1; + video_div_table[2].div = 1; +- }; ++ } + + clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels)); + clk[IMX6QDL_PLL2_BYPASS_SRC] = imx_clk_mux("pll2_bypass_src", base + 0x30, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels)); diff --git a/queue-3.18/arm-imx6sx-set-pll2-as-parent-of-qspi-clocks.patch b/queue-3.18/arm-imx6sx-set-pll2-as-parent-of-qspi-clocks.patch new file mode 100644 index 00000000000..d168984c689 --- /dev/null +++ b/queue-3.18/arm-imx6sx-set-pll2-as-parent-of-qspi-clocks.patch @@ -0,0 +1,52 @@ +From 7c168ed898931f6c3314d696e63cf993378ca192 Mon Sep 17 00:00:00 2001 +From: Fabio Estevam +Date: Tue, 16 Dec 2014 17:30:28 -0200 +Subject: ARM: imx6sx: Set PLL2 as parent of QSPI clocks + +From: Fabio Estevam + +commit 7c168ed898931f6c3314d696e63cf993378ca192 upstream. + +The default qspi2_clk_sel field of register CCM_CS2CDR contains '110' which is +marked as 'reserved', so we can't rely on the default value. + +Provide a proper parent for QSPI clocks to avoid a kernel oops: + +[ 1.037920] Division by zero in kernel. +[ 1.041807] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc7-next-20141204-00002-g5aa23e1 #2143 +[ 1.050967] Hardware name: Freescale i.MX6 SoloX (Device Tree) +[ 1.056853] Backtrace: +[ 1.059360] [<80011ea0>] (dump_backtrace) from [<8001203c>] (show_stack+0x18/0x1c) +[ 1.066982] r6:00000000 r5:00000000 r4:00000000 r3:00000000 +[ 1.072754] [<80012024>] (show_stack) from [<806b7100>] (dump_stack+0x88/0xa4) +[ 1.080038] [<806b7078>] (dump_stack) from [<80011d20>] (__div0+0x18/0x20) +[ 1.086958] r5:be018500 r4:be017c00 +[ 1.090600] [<80011d08>] (__div0) from [<802aa418>] (Ldiv0+0x8/0x10) +[ 1.097012] [<80504fbc>] (clk_divider_set_rate) from [<80503ddc>] (clk_change_rate+0x14c/0x17c) +[ 1.105759] r7:00000000 r6:00000000 r5:be018500 r4:00000000 +[ 1.111516] [<80503c90>] (clk_change_rate) from [<80503ea0>] (clk_set_rate+0x94/0x98) +[ 1.119391] r8:be7e0368 r7:00000000 r6:be11a000 r5:be018500 r4:00000000 r3:00000000 +[ 1.127290] [<80503e0c>] (clk_set_rate) from [<80410558>] (fsl_qspi_probe+0x23c/0x75c) +[ 1.135260] r5:be11a010 r4:be350010 +[ 1.138900] [<8041031c>] (fsl_qspi_probe) from [<80385a18>] (platform_drv_probe+0x50/0xac) + +Signed-off-by: Fabio Estevam +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-imx/clk-imx6sx.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/arm/mach-imx/clk-imx6sx.c ++++ b/arch/arm/mach-imx/clk-imx6sx.c +@@ -558,6 +558,9 @@ static void __init imx6sx_clocks_init(st + clk_set_parent(clks[IMX6SX_CLK_GPU_CORE_SEL], clks[IMX6SX_CLK_PLL3_PFD0]); + clk_set_parent(clks[IMX6SX_CLK_GPU_AXI_SEL], clks[IMX6SX_CLK_PLL3_PFD0]); + ++ clk_set_parent(clks[IMX6SX_CLK_QSPI1_SEL], clks[IMX6SX_CLK_PLL2_BUS]); ++ clk_set_parent(clks[IMX6SX_CLK_QSPI2_SEL], clks[IMX6SX_CLK_PLL2_BUS]); ++ + /* Set initial power mode */ + imx6q_set_lpm(WAIT_CLOCKED); + } diff --git a/queue-3.18/arm-omap2plus_defconfig-use-config_cpufreq_dt.patch b/queue-3.18/arm-omap2plus_defconfig-use-config_cpufreq_dt.patch new file mode 100644 index 00000000000..04b92bc7d57 --- /dev/null +++ b/queue-3.18/arm-omap2plus_defconfig-use-config_cpufreq_dt.patch @@ -0,0 +1,38 @@ +From 40d1746d2eeec5e05956d749cca6364573b472b6 Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Mon, 5 Jan 2015 15:45:45 -0800 +Subject: ARM: omap2plus_defconfig: use CONFIG_CPUFREQ_DT + +From: Nishanth Menon + +commit 40d1746d2eeec5e05956d749cca6364573b472b6 upstream. + +CONFIG_GENERIC_CPUFREQ_CPU0 disappeared with commit bbcf071969b20f +("cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'") + +Use the renamed CONFIG_CPUFREQ_DT generic driver. It looks like with +v3.18-rc1, commit bbcf071969b20f and fdc509b15eb3eb came in via +different trees causing the resultant v3.18-rc1 to be non-functional for +cpufreq as default supported with omap2plus_defconfig. + +Fixes: fdc509b15eb3eb ("ARM: omap2plus_defconfig: Add cpufreq to defconfig") +Signed-off-by: Nishanth Menon +Acked-by: Viresh Kumar +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/configs/omap2plus_defconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/configs/omap2plus_defconfig ++++ b/arch/arm/configs/omap2plus_defconfig +@@ -68,7 +68,7 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y + CONFIG_CPU_FREQ_GOV_POWERSAVE=y + CONFIG_CPU_FREQ_GOV_USERSPACE=y + CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +-CONFIG_GENERIC_CPUFREQ_CPU0=y ++CONFIG_CPUFREQ_DT=y + # CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set + CONFIG_CPU_IDLE=y + CONFIG_BINFMT_MISC=y diff --git a/queue-3.18/arm-omap5-dra7xx-enable-booting-secondary-cpu-in-hyp-mode.patch b/queue-3.18/arm-omap5-dra7xx-enable-booting-secondary-cpu-in-hyp-mode.patch new file mode 100644 index 00000000000..a76488481e2 --- /dev/null +++ b/queue-3.18/arm-omap5-dra7xx-enable-booting-secondary-cpu-in-hyp-mode.patch @@ -0,0 +1,108 @@ +From 999f934de195a1506089b52c77429fdba25da688 Mon Sep 17 00:00:00 2001 +From: Lennart Sorensen +Date: Mon, 5 Jan 2015 15:45:45 -0800 +Subject: ARM: omap5/dra7xx: Enable booting secondary CPU in HYP mode + +From: Lennart Sorensen + +commit 999f934de195a1506089b52c77429fdba25da688 upstream. + +If the boot loader enables HYP mode on the boot CPU, the secondary CPU +also needs to call into the ROM to switch to HYP mode before booting. +The firmwares on the omap5 and dra7xx unfortunately do not take care +of this, so it has to be handled by the kernel. + +This patch is based on "[PATCH 2/2] ARM: OMAP5: Add HYP mode entry support +for secondary CPUs" by Santosh Shilimkar , +except this version does not require a compile time CONFIG to control +if it should enable HYP mode or not, it simply does it based on the mode +of the boot CPU, so it works whether the CPU boots in SVC or HYP mode, +and should even work as a guest kernel inside kvm if qemu decides to +support emulating the omap5 or dra7xx. + +Signed-off-by: Len Sorensen +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/common.h | 1 + + arch/arm/mach-omap2/omap-headsmp.S | 21 +++++++++++++++++++++ + arch/arm/mach-omap2/omap-smp.c | 13 +++++++++++-- + 3 files changed, 33 insertions(+), 2 deletions(-) + +--- a/arch/arm/mach-omap2/common.h ++++ b/arch/arm/mach-omap2/common.h +@@ -249,6 +249,7 @@ extern void omap4_cpu_die(unsigned int c + extern struct smp_operations omap4_smp_ops; + + extern void omap5_secondary_startup(void); ++extern void omap5_secondary_hyp_startup(void); + #endif + + #if defined(CONFIG_SMP) && defined(CONFIG_PM) +--- a/arch/arm/mach-omap2/omap-headsmp.S ++++ b/arch/arm/mach-omap2/omap-headsmp.S +@@ -22,6 +22,7 @@ + + /* Physical address needed since MMU not enabled yet on secondary core */ + #define AUX_CORE_BOOT0_PA 0x48281800 ++#define API_HYP_ENTRY 0x102 + + /* + * OMAP5 specific entry point for secondary CPU to jump from ROM +@@ -41,6 +42,26 @@ wait: ldr r2, =AUX_CORE_BOOT0_PA @ read + b secondary_startup + ENDPROC(omap5_secondary_startup) + /* ++ * Same as omap5_secondary_startup except we call into the ROM to ++ * enable HYP mode first. This is called instead of ++ * omap5_secondary_startup if the primary CPU was put into HYP mode by ++ * the boot loader. ++ */ ++ENTRY(omap5_secondary_hyp_startup) ++wait_2: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0 ++ ldr r0, [r2] ++ mov r0, r0, lsr #5 ++ mrc p15, 0, r4, c0, c0, 5 ++ and r4, r4, #0x0f ++ cmp r0, r4 ++ bne wait_2 ++ ldr r12, =API_HYP_ENTRY ++ adr r0, hyp_boot ++ smc #0 ++hyp_boot: ++ b secondary_startup ++ENDPROC(omap5_secondary_hyp_startup) ++/* + * OMAP4 specific entry point for secondary CPU to jump from ROM + * code. This routine also provides a holding flag into which + * secondary core is held until we're ready for it to initialise. +--- a/arch/arm/mach-omap2/omap-smp.c ++++ b/arch/arm/mach-omap2/omap-smp.c +@@ -22,6 +22,7 @@ + #include + + #include ++#include + + #include "omap-secure.h" + #include "omap-wakeupgen.h" +@@ -227,8 +228,16 @@ static void __init omap4_smp_prepare_cpu + if (omap_secure_apis_support()) + omap_auxcoreboot_addr(virt_to_phys(startup_addr)); + else +- writel_relaxed(virt_to_phys(omap5_secondary_startup), +- base + OMAP_AUX_CORE_BOOT_1); ++ /* ++ * If the boot CPU is in HYP mode then start secondary ++ * CPU in HYP mode as well. ++ */ ++ if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE) ++ writel_relaxed(virt_to_phys(omap5_secondary_hyp_startup), ++ base + OMAP_AUX_CORE_BOOT_1); ++ else ++ writel_relaxed(virt_to_phys(omap5_secondary_startup), ++ base + OMAP_AUX_CORE_BOOT_1); + + } + diff --git a/queue-3.18/arm-omap5-dra7xx-fix-frequency-typos.patch b/queue-3.18/arm-omap5-dra7xx-fix-frequency-typos.patch new file mode 100644 index 00000000000..9dcb3b2e7aa --- /dev/null +++ b/queue-3.18/arm-omap5-dra7xx-fix-frequency-typos.patch @@ -0,0 +1,53 @@ +From 572b24e6d85d98cdc552f07e9fb9870d9460d81b Mon Sep 17 00:00:00 2001 +From: Lennart Sorensen +Date: Mon, 5 Jan 2015 15:45:45 -0800 +Subject: ARM: omap5/dra7xx: Fix frequency typos + +From: Lennart Sorensen + +commit 572b24e6d85d98cdc552f07e9fb9870d9460d81b upstream. + +The switch statement of the possible list of SYSCLK1 frequencies is +missing a 0 in 4 out of the 7 frequencies. + +Fixes: fa6d79d27614 ("ARM: OMAP: Add initialisation for the real-time counter") +Signed-off-by: Len Sorensen +Reviewed-by: Lokesh Vutla +Acked-by: Nishanth Menon +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/timer.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/arch/arm/mach-omap2/timer.c ++++ b/arch/arm/mach-omap2/timer.c +@@ -513,11 +513,11 @@ static void __init realtime_counter_init + rate = clk_get_rate(sys_clk); + /* Numerator/denumerator values refer TRM Realtime Counter section */ + switch (rate) { +- case 1200000: ++ case 12000000: + num = 64; + den = 125; + break; +- case 1300000: ++ case 13000000: + num = 768; + den = 1625; + break; +@@ -529,11 +529,11 @@ static void __init realtime_counter_init + num = 192; + den = 625; + break; +- case 2600000: ++ case 26000000: + num = 384; + den = 1625; + break; +- case 2700000: ++ case 27000000: + num = 256; + den = 1125; + break; diff --git a/queue-3.18/arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch b/queue-3.18/arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch new file mode 100644 index 00000000000..64356887986 --- /dev/null +++ b/queue-3.18/arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch @@ -0,0 +1,55 @@ +From b0ddb319db3d7a1943445f0de0a45c07a7f3457a Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven +Date: Tue, 6 Jan 2015 14:39:10 +0100 +Subject: ARM: shmobile: sh73a0 legacy: Set .control_parent for all irqpin instances + +From: Geert Uytterhoeven + +commit b0ddb319db3d7a1943445f0de0a45c07a7f3457a upstream. + +The sh73a0 INTC can't mask interrupts properly most likely due to a +hardware bug. Set the .control_parent flag to delegate masking to the +parent interrupt controller, like was already done for irqpin1. + +Without this, accessing the three-axis digital accelerometer ADXL345 +on kzm9g through /dev/input/event1 causes an interrupt storm, which +requires a power-cycle to recover from. + +This was inspired by a patch for arch/arm/boot/dts/sh73a0.dtsi from +Laurent Pinchart . + +Signed-off-by: Geert Uytterhoeven +Fixes: 341eb5465f67437a ("ARM: shmobile: INTC External IRQ pin driver on sh73a0") +Signed-off-by: Simon Horman +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-shmobile/setup-sh73a0.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/arm/mach-shmobile/setup-sh73a0.c ++++ b/arch/arm/mach-shmobile/setup-sh73a0.c +@@ -598,6 +598,7 @@ static struct platform_device ipmmu_devi + + static struct renesas_intc_irqpin_config irqpin0_platform_data = { + .irq_base = irq_pin(0), /* IRQ0 -> IRQ7 */ ++ .control_parent = true, + }; + + static struct resource irqpin0_resources[] = { +@@ -659,6 +660,7 @@ static struct platform_device irqpin1_de + + static struct renesas_intc_irqpin_config irqpin2_platform_data = { + .irq_base = irq_pin(16), /* IRQ16 -> IRQ23 */ ++ .control_parent = true, + }; + + static struct resource irqpin2_resources[] = { +@@ -689,6 +691,7 @@ static struct platform_device irqpin2_de + + static struct renesas_intc_irqpin_config irqpin3_platform_data = { + .irq_base = irq_pin(24), /* IRQ24 -> IRQ31 */ ++ .control_parent = true, + }; + + static struct resource irqpin3_resources[] = { diff --git a/queue-3.18/bus-omap_l3_noc-add-resume-hook-to-restore-context.patch b/queue-3.18/bus-omap_l3_noc-add-resume-hook-to-restore-context.patch new file mode 100644 index 00000000000..003dc46bcc7 --- /dev/null +++ b/queue-3.18/bus-omap_l3_noc-add-resume-hook-to-restore-context.patch @@ -0,0 +1,99 @@ +From 61b43d4e919e8fa5e10c77ee32ba328da07e0264 Mon Sep 17 00:00:00 2001 +From: Keerthy +Date: Mon, 10 Nov 2014 23:49:47 +0530 +Subject: bus: omap_l3_noc: Add resume hook to restore context + +From: Keerthy + +commit 61b43d4e919e8fa5e10c77ee32ba328da07e0264 upstream. + +On certain SoCs such as AM437x SoC, L3_noc error registers are +maintained in power domain such as per domain which looses context as part +of low power state such as RTC+DDR mode. On these platforms when we +mask interrupts which we cannot handle, the source of these interrupts +still remain on resume, however, the flag mux registers now contain +their reset value (unmasked) - this breaks the system with infinite +interrupts since we do not these interrupts to take place ever again. + +To handle this: restore the masking of interrupts which we have +already recorded in the system as ones we cannot handle. + +Fixes: 2100b595b7 ("bus: omap_l3_noc: ignore masked out unclearable targets") +Acked-by: Nishanth Menon +Signed-off-by: Keerthy +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/bus/omap_l3_noc.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 55 insertions(+) + +--- a/drivers/bus/omap_l3_noc.c ++++ b/drivers/bus/omap_l3_noc.c +@@ -296,11 +296,66 @@ static int omap_l3_probe(struct platform + return ret; + } + ++#ifdef CONFIG_PM ++ ++/** ++ * l3_resume_noirq() - resume function for l3_noc ++ * @dev: pointer to l3_noc device structure ++ * ++ * We only have the resume handler only since we ++ * have already maintained the delta register ++ * configuration as part of configuring the system ++ */ ++static int l3_resume_noirq(struct device *dev) ++{ ++ struct omap_l3 *l3 = dev_get_drvdata(dev); ++ int i; ++ struct l3_flagmux_data *flag_mux; ++ void __iomem *base, *mask_regx = NULL; ++ u32 mask_val; ++ ++ for (i = 0; i < l3->num_modules; i++) { ++ base = l3->l3_base[i]; ++ flag_mux = l3->l3_flagmux[i]; ++ if (!flag_mux->mask_app_bits && !flag_mux->mask_dbg_bits) ++ continue; ++ ++ mask_regx = base + flag_mux->offset + L3_FLAGMUX_MASK0 + ++ (L3_APPLICATION_ERROR << 3); ++ mask_val = readl_relaxed(mask_regx); ++ mask_val &= ~(flag_mux->mask_app_bits); ++ ++ writel_relaxed(mask_val, mask_regx); ++ mask_regx = base + flag_mux->offset + L3_FLAGMUX_MASK0 + ++ (L3_DEBUG_ERROR << 3); ++ mask_val = readl_relaxed(mask_regx); ++ mask_val &= ~(flag_mux->mask_dbg_bits); ++ ++ writel_relaxed(mask_val, mask_regx); ++ } ++ ++ /* Dummy read to force OCP barrier */ ++ if (mask_regx) ++ (void)readl(mask_regx); ++ ++ return 0; ++} ++ ++static const struct dev_pm_ops l3_dev_pm_ops = { ++ .resume_noirq = l3_resume_noirq, ++}; ++ ++#define L3_DEV_PM_OPS (&l3_dev_pm_ops) ++#else ++#define L3_DEV_PM_OPS NULL ++#endif ++ + static struct platform_driver omap_l3_driver = { + .probe = omap_l3_probe, + .driver = { + .name = "omap_l3_noc", + .owner = THIS_MODULE, ++ .pm = L3_DEV_PM_OPS, + .of_match_table = of_match_ptr(l3_noc_match), + }, + }; diff --git a/queue-3.18/bus-omap_l3_noc-correct-returning-irq_handled.patch b/queue-3.18/bus-omap_l3_noc-correct-returning-irq_handled.patch new file mode 100644 index 00000000000..201c16b722e --- /dev/null +++ b/queue-3.18/bus-omap_l3_noc-correct-returning-irq_handled.patch @@ -0,0 +1,44 @@ +From c4cf0935a2d8fe6d186bf4253ea3c4b4a8a8a710 Mon Sep 17 00:00:00 2001 +From: Keerthy +Date: Mon, 10 Nov 2014 23:49:48 +0530 +Subject: bus: omap_l3_noc: Correct returning IRQ_HANDLED + unconditionally in the irq handler + +From: Keerthy + +commit c4cf0935a2d8fe6d186bf4253ea3c4b4a8a8a710 upstream. + +Correct returning IRQ_HANDLED unconditionally in the irq handler. +Return IRQ_NONE for some interrupt which we do not expect to be +handled in this handler. This prevents kernel stalling with back +to back spurious interrupts. + +Fixes: 2722e56de6 ("OMAP4: l3: Introduce l3-interconnect error handling driver") +Acked-by: Nishanth Menon +Signed-off-by: Keerthy +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/bus/omap_l3_noc.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/bus/omap_l3_noc.c ++++ b/drivers/bus/omap_l3_noc.c +@@ -222,10 +222,14 @@ static irqreturn_t l3_interrupt_handler( + } + + /* Error found so break the for loop */ +- break; ++ return IRQ_HANDLED; + } + } +- return IRQ_HANDLED; ++ ++ dev_err(l3->dev, "L3 %s IRQ not handled!!\n", ++ inttype ? "debug" : "application"); ++ ++ return IRQ_NONE; + } + + static const struct of_device_id l3_noc_match[] = { diff --git a/queue-3.18/can-kvaser_usb-don-t-free-packets-when-tight-on-urbs.patch b/queue-3.18/can-kvaser_usb-don-t-free-packets-when-tight-on-urbs.patch new file mode 100644 index 00000000000..f3efb536448 --- /dev/null +++ b/queue-3.18/can-kvaser_usb-don-t-free-packets-when-tight-on-urbs.patch @@ -0,0 +1,81 @@ +From b442723fcec445fb0ae1104888dd22cd285e0a91 Mon Sep 17 00:00:00 2001 +From: "Ahmed S. Darwish" +Date: Mon, 5 Jan 2015 12:49:10 -0500 +Subject: can: kvaser_usb: Don't free packets when tight on URBs + +From: "Ahmed S. Darwish" + +commit b442723fcec445fb0ae1104888dd22cd285e0a91 upstream. + +Flooding the Kvaser CAN to USB dongle with multiple reads and +writes in high frequency caused seemingly-random panics in the +kernel. + +On further inspection, it seems the driver erroneously freed the +to-be-transmitted packet upon getting tight on URBs and returning +NETDEV_TX_BUSY, leading to invalid memory writes and double frees +at a later point in time. + +Note: + +Finding no more URBs/transmit-contexts and returning NETDEV_TX_BUSY +is a driver bug in and out of itself: it means that our start/stop +queue flow control is broken. + +This patch only fixes the (buggy) error handling code; the root +cause shall be fixed in a later commit. + +Acked-by: Olivier Sobrie +Signed-off-by: Ahmed S. Darwish +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/usb/kvaser_usb.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/drivers/net/can/usb/kvaser_usb.c ++++ b/drivers/net/can/usb/kvaser_usb.c +@@ -1294,12 +1294,14 @@ static netdev_tx_t kvaser_usb_start_xmit + if (!urb) { + netdev_err(netdev, "No memory left for URBs\n"); + stats->tx_dropped++; +- goto nourbmem; ++ dev_kfree_skb(skb); ++ return NETDEV_TX_OK; + } + + buf = kmalloc(sizeof(struct kvaser_msg), GFP_ATOMIC); + if (!buf) { + stats->tx_dropped++; ++ dev_kfree_skb(skb); + goto nobufmem; + } + +@@ -1334,6 +1336,7 @@ static netdev_tx_t kvaser_usb_start_xmit + } + } + ++ /* This should never happen; it implies a flow control bug */ + if (!context) { + netdev_warn(netdev, "cannot find free context\n"); + ret = NETDEV_TX_BUSY; +@@ -1364,9 +1367,6 @@ static netdev_tx_t kvaser_usb_start_xmit + if (unlikely(err)) { + can_free_echo_skb(netdev, context->echo_index); + +- skb = NULL; /* set to NULL to avoid double free in +- * dev_kfree_skb(skb) */ +- + atomic_dec(&priv->active_tx_urbs); + usb_unanchor_urb(urb); + +@@ -1388,8 +1388,6 @@ releasebuf: + kfree(buf); + nobufmem: + usb_free_urb(urb); +-nourbmem: +- dev_kfree_skb(skb); + return ret; + } + diff --git a/queue-3.18/can-kvaser_usb-don-t-send-a-reset_chip-for-non-existing-channels.patch b/queue-3.18/can-kvaser_usb-don-t-send-a-reset_chip-for-non-existing-channels.patch new file mode 100644 index 00000000000..4019707f027 --- /dev/null +++ b/queue-3.18/can-kvaser_usb-don-t-send-a-reset_chip-for-non-existing-channels.patch @@ -0,0 +1,46 @@ +From 5e7e6e0c9b47a45576c38b4a72d67927a5e049f7 Mon Sep 17 00:00:00 2001 +From: "Ahmed S. Darwish" +Date: Mon, 5 Jan 2015 12:57:13 -0500 +Subject: can: kvaser_usb: Don't send a RESET_CHIP for non-existing channels + +From: "Ahmed S. Darwish" + +commit 5e7e6e0c9b47a45576c38b4a72d67927a5e049f7 upstream. + +Recent Leaf firmware versions (>= 3.1.557) do not allow to send +commands for non-existing channels. If a command is sent for a +non-existing channel, the firmware crashes. + +Reported-by: Christopher Storah +Signed-off-by: Olivier Sobrie +Signed-off-by: Ahmed S. Darwish +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/usb/kvaser_usb.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/net/can/usb/kvaser_usb.c ++++ b/drivers/net/can/usb/kvaser_usb.c +@@ -1503,6 +1503,10 @@ static int kvaser_usb_init_one(struct us + struct kvaser_usb_net_priv *priv; + int i, err; + ++ err = kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, channel); ++ if (err) ++ return err; ++ + netdev = alloc_candev(sizeof(*priv), MAX_TX_URBS); + if (!netdev) { + dev_err(&intf->dev, "Cannot alloc candev\n"); +@@ -1607,9 +1611,6 @@ static int kvaser_usb_probe(struct usb_i + + usb_set_intfdata(intf, dev); + +- for (i = 0; i < MAX_NET_DEVICES; i++) +- kvaser_usb_send_simple_msg(dev, CMD_RESET_CHIP, i); +- + err = kvaser_usb_get_software_info(dev); + if (err) { + dev_err(&intf->dev, diff --git a/queue-3.18/can-kvaser_usb-reset-all-urb-tx-contexts-upon-channel-close.patch b/queue-3.18/can-kvaser_usb-reset-all-urb-tx-contexts-upon-channel-close.patch new file mode 100644 index 00000000000..77fd53bd357 --- /dev/null +++ b/queue-3.18/can-kvaser_usb-reset-all-urb-tx-contexts-upon-channel-close.patch @@ -0,0 +1,78 @@ +From 889b77f7fd2bcc922493d73a4c51d8a851505815 Mon Sep 17 00:00:00 2001 +From: "Ahmed S. Darwish" +Date: Mon, 5 Jan 2015 12:52:06 -0500 +Subject: can: kvaser_usb: Reset all URB tx contexts upon channel close + +From: "Ahmed S. Darwish" + +commit 889b77f7fd2bcc922493d73a4c51d8a851505815 upstream. + +Flooding the Kvaser CAN to USB dongle with multiple reads and +writes in very high frequency (*), closing the CAN channel while +all the transmissions are on (#), opening the device again (@), +then sending a small number of packets would make the driver +enter an almost infinite loop of: + +[....] +[15959.853988] kvaser_usb 4-3:1.0 can0: cannot find free context +[15959.853990] kvaser_usb 4-3:1.0 can0: cannot find free context +[15959.853991] kvaser_usb 4-3:1.0 can0: cannot find free context +[15959.853993] kvaser_usb 4-3:1.0 can0: cannot find free context +[15959.853994] kvaser_usb 4-3:1.0 can0: cannot find free context +[15959.853995] kvaser_usb 4-3:1.0 can0: cannot find free context +[....] + +_dragging the whole system down_ in the process due to the +excessive logging output. + +Initially, this has caused random panics in the kernel due to a +buggy error recovery path. That got fixed in an earlier commit.(%) +This patch aims at solving the root cause. --> + +16 tx URBs and contexts are allocated per CAN channel per USB +device. Such URBs are protected by: + +a) A simple atomic counter, up to a value of MAX_TX_URBS (16) +b) A flag in each URB context, stating if it's free +c) The fact that ndo_start_xmit calls are themselves protected + by the networking layers higher above + +After grabbing one of the tx URBs, if the driver noticed that all +of them are now taken, it stops the netif transmission queue. +Such queue is worken up again only if an acknowedgment was received +from the firmware on one of our earlier-sent frames. + +Meanwhile, upon channel close (#), the driver sends a CMD_STOP_CHIP +to the firmware, effectively closing all further communication. In +the high traffic case, the atomic counter remains at MAX_TX_URBS, +and all the URB contexts remain marked as active. While opening +the channel again (@), it cannot send any further frames since no +more free tx URB contexts are available. + +Reset all tx URB contexts upon CAN channel close. + +(*) 50 parallel instances of `cangen0 -g 0 -ix` +(#) `ifconfig can0 down` +(@) `ifconfig can0 up` +(%) "can: kvaser_usb: Don't free packets when tight on URBs" + +Signed-off-by: Ahmed S. Darwish +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/usb/kvaser_usb.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/can/usb/kvaser_usb.c ++++ b/drivers/net/can/usb/kvaser_usb.c +@@ -1246,6 +1246,9 @@ static int kvaser_usb_close(struct net_d + if (err) + netdev_warn(netdev, "Cannot stop device, error %d\n", err); + ++ /* reset tx contexts */ ++ kvaser_usb_unlink_tx_urbs(priv); ++ + priv->can.state = CAN_STATE_STOPPED; + close_candev(priv->netdev); + diff --git a/queue-3.18/decompress_bunzip2-off-by-one-in-get_next_block.patch b/queue-3.18/decompress_bunzip2-off-by-one-in-get_next_block.patch new file mode 100644 index 00000000000..66e55db849f --- /dev/null +++ b/queue-3.18/decompress_bunzip2-off-by-one-in-get_next_block.patch @@ -0,0 +1,40 @@ +From b5c8afe5be51078a979d86ae5ae78c4ac948063d Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Fri, 12 Dec 2014 16:58:05 -0800 +Subject: decompress_bunzip2: off by one in get_next_block() + +From: Dan Carpenter + +commit b5c8afe5be51078a979d86ae5ae78c4ac948063d upstream. + +"origPtr" is used as an offset into the bd->dbuf[] array. That array is +allocated in start_bunzip() and has "bd->dbufSize" number of elements so +the test here should be >= instead of >. + +Later we check "origPtr" again before using it as an offset so I don't +know if this bug can be triggered in real life. + +Fixes: bc22c17e12c1 ('bzip2/lzma: library support for gzip, bzip2 and lzma decompression') +Signed-off-by: Dan Carpenter +Cc: Alain Knaff +Cc: Yinghai Lu +Cc: "H. Peter Anvin" +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + lib/decompress_bunzip2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/decompress_bunzip2.c ++++ b/lib/decompress_bunzip2.c +@@ -184,7 +184,7 @@ static int INIT get_next_block(struct bu + if (get_bits(bd, 1)) + return RETVAL_OBSOLETE_INPUT; + origPtr = get_bits(bd, 24); +- if (origPtr > dbufSize) ++ if (origPtr >= dbufSize) + return RETVAL_DATA_ERROR; + /* mapping table: if some byte values are never used (encoding things + like ascii text), the compression code removes the gaps to have fewer diff --git a/queue-3.18/iio-ad799x-fix-ad7991-ad7995-ad7999-config-setup.patch b/queue-3.18/iio-ad799x-fix-ad7991-ad7995-ad7999-config-setup.patch new file mode 100644 index 00000000000..800f265abc7 --- /dev/null +++ b/queue-3.18/iio-ad799x-fix-ad7991-ad7995-ad7999-config-setup.patch @@ -0,0 +1,57 @@ +From 2eacc608b3bf3519fc353c558454873f4589146d Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen +Date: Wed, 26 Nov 2014 11:35:35 +0100 +Subject: iio: ad799x: Fix ad7991/ad7995/ad7999 config setup + +From: Lars-Peter Clausen + +commit 2eacc608b3bf3519fc353c558454873f4589146d upstream. + +The ad7991/ad7995/ad7999 does not have a configuration register like the +other devices that can be written and read. The configuration is written as +part of the conversion sequence. + +Fixes: 0f7ddcc1bff1 ("iio:adc:ad799x: Write default config on probe and reset alert status on probe") +Signed-off-by: Lars-Peter Clausen +Tested-by: Mike Looijmans +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iio/adc/ad799x.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +--- a/drivers/iio/adc/ad799x.c ++++ b/drivers/iio/adc/ad799x.c +@@ -143,9 +143,15 @@ static int ad799x_write_config(struct ad + case ad7998: + return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG, + val); +- default: ++ case ad7992: ++ case ad7993: ++ case ad7994: + return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG, + val); ++ default: ++ /* Will be written when doing a conversion */ ++ st->config = val; ++ return 0; + } + } + +@@ -155,8 +161,13 @@ static int ad799x_read_config(struct ad7 + case ad7997: + case ad7998: + return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG); +- default: ++ case ad7992: ++ case ad7993: ++ case ad7994: + return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG); ++ default: ++ /* No readback support */ ++ return st->config; + } + } + diff --git a/queue-3.18/input-elantech-support-new-ics-types-for-version-4.patch b/queue-3.18/input-elantech-support-new-ics-types-for-version-4.patch new file mode 100644 index 00000000000..9058f3caa79 --- /dev/null +++ b/queue-3.18/input-elantech-support-new-ics-types-for-version-4.patch @@ -0,0 +1,30 @@ +From 810aa0918b2b032684c8cad13f73d6ba37ad11c0 Mon Sep 17 00:00:00 2001 +From: Sam hung +Date: Thu, 8 Jan 2015 13:22:43 -0800 +Subject: Input: elantech - support new ICs types for version 4 + +From: Sam hung + +commit 810aa0918b2b032684c8cad13f73d6ba37ad11c0 upstream. + +This change allows the driver to recognize newer Elantech touchpads. + +Signed-off-by: Yi ju Hong +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/mouse/elantech.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/input/mouse/elantech.c ++++ b/drivers/input/mouse/elantech.c +@@ -1520,6 +1520,8 @@ static int elantech_set_properties(struc + case 7: + case 8: + case 9: ++ case 10: ++ case 13: + etd->hw_version = 4; + break; + default: diff --git a/queue-3.18/input-i8042-add-acer-aspire-7738-to-the-nomux-list.patch b/queue-3.18/input-i8042-add-acer-aspire-7738-to-the-nomux-list.patch new file mode 100644 index 00000000000..5e6f6b8a19e --- /dev/null +++ b/queue-3.18/input-i8042-add-acer-aspire-7738-to-the-nomux-list.patch @@ -0,0 +1,36 @@ +From 9333caeaeae4f831054e0e127a6ed3948b604d3e Mon Sep 17 00:00:00 2001 +From: Dmitry Torokhov +Date: Thu, 8 Jan 2015 14:53:23 -0800 +Subject: Input: I8042 - add Acer Aspire 7738 to the nomux list + +From: Dmitry Torokhov + +commit 9333caeaeae4f831054e0e127a6ed3948b604d3e upstream. + +When KBC is in active multiplexing mode the touchpad on this laptop does +not work. + +Reported-by: Bilal Koc +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/serio/i8042-x86ia64io.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/input/serio/i8042-x86ia64io.h ++++ b/drivers/input/serio/i8042-x86ia64io.h +@@ -415,6 +415,13 @@ static const struct dmi_system_id __init + }, + }, + { ++ /* Acer Aspire 7738 */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Acer"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7738"), ++ }, ++ }, ++ { + /* Gericom Bellagio */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), diff --git a/queue-3.18/input-i8042-reset-keyboard-to-fix-elantech-touchpad-detection.patch b/queue-3.18/input-i8042-reset-keyboard-to-fix-elantech-touchpad-detection.patch new file mode 100644 index 00000000000..5339803e536 --- /dev/null +++ b/queue-3.18/input-i8042-reset-keyboard-to-fix-elantech-touchpad-detection.patch @@ -0,0 +1,124 @@ +From 148e9a711e034e06310a8c36b64957934ebe30f2 Mon Sep 17 00:00:00 2001 +From: Srihari Vijayaraghavan +Date: Wed, 7 Jan 2015 16:25:53 -0800 +Subject: Input: i8042 - reset keyboard to fix Elantech touchpad detection +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Srihari Vijayaraghavan + +commit 148e9a711e034e06310a8c36b64957934ebe30f2 upstream. + +On some laptops, keyboard needs to be reset in order to successfully detect +touchpad (e.g., some Gigabyte laptop models with Elantech touchpads). +Without resettin keyboard touchpad pretends to be completely dead. + +Based on the original patch by Mateusz Jończyk this version has been +expanded to include DMI based detection & application of the fix +automatically on the affected models of laptops. This has been confirmed to +fix problem by three users already on three different models of laptops. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81331 +Signed-off-by: Srihari Vijayaraghavan +Acked-by: Mateusz Jończyk +Tested-by: Srihari Vijayaraghavan +Tested by: Zakariya Dehlawi +Tested-by: Guillaum Bouchard +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/kernel-parameters.txt | 1 + + drivers/input/serio/i8042-x86ia64io.h | 32 ++++++++++++++++++++++++++++++++ + drivers/input/serio/i8042.c | 14 ++++++++++++++ + 3 files changed, 47 insertions(+) + +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -1270,6 +1270,7 @@ bytes respectively. Such letter suffixes + i8042.notimeout [HW] Ignore timeout condition signalled by controller + i8042.reset [HW] Reset the controller during init and cleanup + i8042.unlock [HW] Unlock (ignore) the keylock ++ i8042.kbdreset [HW] Reset device connected to KBD port + + i810= [HW,DRM] + +--- a/drivers/input/serio/i8042-x86ia64io.h ++++ b/drivers/input/serio/i8042-x86ia64io.h +@@ -735,6 +735,35 @@ static const struct dmi_system_id __init + { } + }; + ++/* ++ * Some laptops need keyboard reset before probing for the trackpad to get ++ * it detected, initialised & finally work. ++ */ ++static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = { ++ { ++ /* Gigabyte P35 v2 - Elantech touchpad */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"), ++ }, ++ }, ++ { ++ /* Aorus branded Gigabyte X3 Plus - Elantech touchpad */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "X3"), ++ }, ++ }, ++ { ++ /* Gigabyte P34 - Elantech touchpad */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "P34"), ++ }, ++ }, ++ { } ++}; ++ + #endif /* CONFIG_X86 */ + + #ifdef CONFIG_PNP +@@ -1030,6 +1059,9 @@ static int __init i8042_platform_init(vo + if (dmi_check_system(i8042_dmi_dritek_table)) + i8042_dritek = true; + ++ if (dmi_check_system(i8042_dmi_kbdreset_table)) ++ i8042_kbdreset = true; ++ + /* + * A20 was already enabled during early kernel init. But some buggy + * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to +--- a/drivers/input/serio/i8042.c ++++ b/drivers/input/serio/i8042.c +@@ -67,6 +67,10 @@ static bool i8042_notimeout; + module_param_named(notimeout, i8042_notimeout, bool, 0); + MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042"); + ++static bool i8042_kbdreset; ++module_param_named(kbdreset, i8042_kbdreset, bool, 0); ++MODULE_PARM_DESC(kbdreset, "Reset device connected to KBD port"); ++ + #ifdef CONFIG_X86 + static bool i8042_dritek; + module_param_named(dritek, i8042_dritek, bool, 0); +@@ -790,6 +794,16 @@ static int __init i8042_check_aux(void) + return -1; + + /* ++ * Reset keyboard (needed on some laptops to successfully detect ++ * touchpad, e.g., some Gigabyte laptop models with Elantech ++ * touchpads). ++ */ ++ if (i8042_kbdreset) { ++ pr_warn("Attempting to reset device connected to KBD port\n"); ++ i8042_kbd_write(NULL, (unsigned char) 0xff); ++ } ++ ++/* + * Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and + * used it for a PCI card or somethig else. + */ diff --git a/queue-3.18/kbuild-fix-removal-of-the-debian-directory.patch b/queue-3.18/kbuild-fix-removal-of-the-debian-directory.patch new file mode 100644 index 00000000000..a34c7f11be2 --- /dev/null +++ b/queue-3.18/kbuild-fix-removal-of-the-debian-directory.patch @@ -0,0 +1,53 @@ +From a16c5f99a28c9945165c46da27fff8e6f26f8736 Mon Sep 17 00:00:00 2001 +From: Michal Marek +Date: Wed, 31 Dec 2014 16:29:35 +0100 +Subject: kbuild: Fix removal of the debian/ directory + +From: Michal Marek + +commit a16c5f99a28c9945165c46da27fff8e6f26f8736 upstream. + +scripts/Makefile.clean treats absolute path specially, but +$(objtree)/debian is no longer an absolute path since 7e1c0477 (kbuild: +Use relative path for $(objtree). Work around this by checking if the +path starts with $(objtree)/. + +Reported-and-tested-by: Sedat Dilek +Fixes: 7e1c0477 (kbuild: Use relative path for $(objtree) +Signed-off-by: Michal Marek +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/Makefile.clean | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/scripts/Makefile.clean ++++ b/scripts/Makefile.clean +@@ -45,19 +45,19 @@ __clean-files := $(extra-y) $(extra-m) $ + + __clean-files := $(filter-out $(no-clean-files), $(__clean-files)) + +-# as clean-files is given relative to the current directory, this adds +-# a $(obj) prefix, except for absolute paths ++# clean-files is given relative to the current directory, unless it ++# starts with $(objtree)/ (which means "./", so do not add "./" unless ++# you want to delete a file from the toplevel object directory). + + __clean-files := $(wildcard \ +- $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \ +- $(filter /%, $(__clean-files))) ++ $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(__clean-files))) \ ++ $(filter $(objtree)/%, $(__clean-files))) + +-# as clean-dirs is given relative to the current directory, this adds +-# a $(obj) prefix, except for absolute paths ++# same as clean-files + + __clean-dirs := $(wildcard \ +- $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs))) \ +- $(filter /%, $(clean-dirs))) ++ $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(clean-dirs))) \ ++ $(filter $(objtree)/%, $(clean-dirs))) + + # ========================================================================== + diff --git a/queue-3.18/series b/queue-3.18/series index c4daf966f08..789153da727 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -150,3 +150,29 @@ usb-gadget-udc-atmel-fix-possible-in-hang-issue.patch usb-gadget-udc-atmel-fix-possible-oops-when-unloading-module.patch usb-console-fix-uninitialised-ldisc-semaphore.patch usb-console-fix-potential-use-after-free.patch +usb-ehci-fix-initialization-bug-in-iso_stream_schedule.patch +usb-musb-stuff-leak-of-struct-usb_hcd.patch +can-kvaser_usb-don-t-free-packets-when-tight-on-urbs.patch +can-kvaser_usb-reset-all-urb-tx-contexts-upon-channel-close.patch +can-kvaser_usb-don-t-send-a-reset_chip-for-non-existing-channels.patch +input-elantech-support-new-ics-types-for-version-4.patch +input-i8042-reset-keyboard-to-fix-elantech-touchpad-detection.patch +input-i8042-add-acer-aspire-7738-to-the-nomux-list.patch +arm-omap2plus_defconfig-use-config_cpufreq_dt.patch +arm-imx6sx-set-pll2-as-parent-of-qspi-clocks.patch +arm-dts-imx25-fix-the-spi1-clocks.patch +arm-dts-imx51-babbage-fix-ulpi-phy-reset-modelling.patch +arm-imx6q-drop-unnecessary-semicolon.patch +arm-clk-imx6q-fix-video-divider-for-rev-t0-1.0.patch +arm-omap5-dra7xx-fix-frequency-typos.patch +arm-omap5-dra7xx-enable-booting-secondary-cpu-in-hyp-mode.patch +bus-omap_l3_noc-add-resume-hook-to-restore-context.patch +bus-omap_l3_noc-correct-returning-irq_handled.patch +arm-dts-berlin-add-broken-cd-and-set-bus-width-for-emmc-in.patch +arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch +arm-dts-dra7-evm-fix-qspi-device-tree-partition-size.patch +iio-ad799x-fix-ad7991-ad7995-ad7999-config-setup.patch +decompress_bunzip2-off-by-one-in-get_next_block.patch +um-skip-futex_atomic_cmpxchg_inatomic-test.patch +x86-um-actually-mark-system-call-tables-readonly.patch +kbuild-fix-removal-of-the-debian-directory.patch diff --git a/queue-3.18/um-skip-futex_atomic_cmpxchg_inatomic-test.patch b/queue-3.18/um-skip-futex_atomic_cmpxchg_inatomic-test.patch new file mode 100644 index 00000000000..d44a90ce7b5 --- /dev/null +++ b/queue-3.18/um-skip-futex_atomic_cmpxchg_inatomic-test.patch @@ -0,0 +1,35 @@ +From f911d731054ab3d82ee72a16b889e17ca3a2332a Mon Sep 17 00:00:00 2001 +From: Richard Weinberger +Date: Wed, 10 Dec 2014 13:53:51 +0100 +Subject: um: Skip futex_atomic_cmpxchg_inatomic() test + +From: Richard Weinberger + +commit f911d731054ab3d82ee72a16b889e17ca3a2332a upstream. + +futex_atomic_cmpxchg_inatomic() does not work on UML because +it triggers a copy_from_user() in kernel context. +On UML copy_from_user() can only be used if the kernel was called +by a real user space process such that UML can use ptrace() +to fetch the value. + +Reported-by: Miklos Szeredi +Suggested-by: Geert Uytterhoeven +Signed-off-by: Richard Weinberger +Tested-by: Daniel Walter +Signed-off-by: Greg Kroah-Hartman + +--- + arch/um/Kconfig.common | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/um/Kconfig.common ++++ b/arch/um/Kconfig.common +@@ -3,6 +3,7 @@ config UML + default y + select HAVE_ARCH_AUDITSYSCALL + select HAVE_UID16 ++ select HAVE_FUTEX_CMPXCHG if FUTEX + select GENERIC_IRQ_SHOW + select GENERIC_CPU_DEVICES + select GENERIC_IO diff --git a/queue-3.18/usb-ehci-fix-initialization-bug-in-iso_stream_schedule.patch b/queue-3.18/usb-ehci-fix-initialization-bug-in-iso_stream_schedule.patch new file mode 100644 index 00000000000..a730d36e30d --- /dev/null +++ b/queue-3.18/usb-ehci-fix-initialization-bug-in-iso_stream_schedule.patch @@ -0,0 +1,54 @@ +From 6d89252a998a695ecb0348fc2d717dc33d90cae9 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 4 Dec 2014 10:21:56 -0500 +Subject: USB: EHCI: fix initialization bug in iso_stream_schedule() + +From: Alan Stern + +commit 6d89252a998a695ecb0348fc2d717dc33d90cae9 upstream. + +Commit c3ee9b76aa93 (EHCI: improved logic for isochronous scheduling) +introduced the idea of using ehci->last_iso_frame as the origin (or +base) for the circular calculations involved in modifying the +isochronous schedule. However, the new code it added used +ehci->last_iso_frame before the value was properly initialized. This +patch rectifies the mistake by moving the initialization lines earlier +in iso_stream_schedule(). + +This fixes Bugzilla #72891. + +Signed-off-by: Alan Stern +Fixes: c3ee9b76aa93 +Reported-by: Joe Bryant +Tested-by: Joe Bryant +Tested-by: Martin Long +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-sched.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/usb/host/ehci-sched.c ++++ b/drivers/usb/host/ehci-sched.c +@@ -1581,6 +1581,10 @@ iso_stream_schedule ( + else + next = (now + 2 + 7) & ~0x07; /* full frame cache */ + ++ /* If needed, initialize last_iso_frame so that this URB will be seen */ ++ if (ehci->isoc_count == 0) ++ ehci->last_iso_frame = now >> 3; ++ + /* + * Use ehci->last_iso_frame as the base. There can't be any + * TDs scheduled for earlier than that. +@@ -1671,10 +1675,6 @@ iso_stream_schedule ( + urb->start_frame = start & (mod - 1); + if (!stream->highspeed) + urb->start_frame >>= 3; +- +- /* Make sure scan_isoc() sees these */ +- if (ehci->isoc_count == 0) +- ehci->last_iso_frame = now >> 3; + return status; + + fail: diff --git a/queue-3.18/usb-musb-stuff-leak-of-struct-usb_hcd.patch b/queue-3.18/usb-musb-stuff-leak-of-struct-usb_hcd.patch new file mode 100644 index 00000000000..1c7fe1422dc --- /dev/null +++ b/queue-3.18/usb-musb-stuff-leak-of-struct-usb_hcd.patch @@ -0,0 +1,37 @@ +From 68693b8ea4e284c46bff919ac62bd9ccdfdbb6ba Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Thu, 11 Dec 2014 18:14:18 +0100 +Subject: usb: musb: stuff leak of struct usb_hcd + +From: Sebastian Andrzej Siewior + +commit 68693b8ea4e284c46bff919ac62bd9ccdfdbb6ba upstream. + +since the split of host+gadget mode in commit 74c2e9360058 ("usb: musb: +factor out hcd initalization") we leak the usb_hcd struct. We call now +musb_host_cleanup() which does basically usb_remove_hcd() and also sets +the hcd variable to NULL. Doing so makes the finall call to +musb_host_free() basically a nop and the usb_hcd remains around for ever +without anowner. +This patch drops that NULL assignment for that reason. + +Fixes: 74c2e9360058 ("usb: musb: factor out hcd initalization") +Cc: Daniel Mack +Signed-off-by: Sebastian Andrzej Siewior +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/musb/musb_host.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/usb/musb/musb_host.c ++++ b/drivers/usb/musb/musb_host.c +@@ -2663,7 +2663,6 @@ void musb_host_cleanup(struct musb *musb + if (musb->port_mode == MUSB_PORT_MODE_GADGET) + return; + usb_remove_hcd(musb->hcd); +- musb->hcd = NULL; + } + + void musb_host_free(struct musb *musb) diff --git a/queue-3.18/x86-um-actually-mark-system-call-tables-readonly.patch b/queue-3.18/x86-um-actually-mark-system-call-tables-readonly.patch new file mode 100644 index 00000000000..e5b6305bd9a --- /dev/null +++ b/queue-3.18/x86-um-actually-mark-system-call-tables-readonly.patch @@ -0,0 +1,64 @@ +From b485342bd79af363c77ef1a421c4a0aef2de9812 Mon Sep 17 00:00:00 2001 +From: Daniel Borkmann +Date: Sat, 3 Jan 2015 13:11:10 +0100 +Subject: x86, um: actually mark system call tables readonly + +From: Daniel Borkmann + +commit b485342bd79af363c77ef1a421c4a0aef2de9812 upstream. + +Commit a074335a370e ("x86, um: Mark system call tables readonly") was +supposed to mark the sys_call_table in UML as RO by adding the const, +but it doesn't have the desired effect as it's nevertheless being placed +into the data section since __cacheline_aligned enforces sys_call_table +being placed into .data..cacheline_aligned instead. We need to use +the ____cacheline_aligned version instead to fix this issue. + +Before: + +$ nm -v arch/x86/um/sys_call_table_64.o | grep -1 "sys_call_table" + U sys_writev +0000000000000000 D sys_call_table +0000000000000000 D syscall_table_size + +After: + +$ nm -v arch/x86/um/sys_call_table_64.o | grep -1 "sys_call_table" + U sys_writev +0000000000000000 R sys_call_table +0000000000000000 D syscall_table_size + +Fixes: a074335a370e ("x86, um: Mark system call tables readonly") +Cc: H. Peter Anvin +Cc: Andrew Morton +Signed-off-by: Daniel Borkmann +Signed-off-by: Richard Weinberger +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/um/sys_call_table_32.c | 2 +- + arch/x86/um/sys_call_table_64.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/x86/um/sys_call_table_32.c ++++ b/arch/x86/um/sys_call_table_32.c +@@ -34,7 +34,7 @@ typedef asmlinkage void (*sys_call_ptr_t + + extern asmlinkage void sys_ni_syscall(void); + +-const sys_call_ptr_t sys_call_table[] __cacheline_aligned = { ++const sys_call_ptr_t sys_call_table[] ____cacheline_aligned = { + /* + * Smells like a compiler bug -- it doesn't work + * when the & below is removed. +--- a/arch/x86/um/sys_call_table_64.c ++++ b/arch/x86/um/sys_call_table_64.c +@@ -46,7 +46,7 @@ typedef void (*sys_call_ptr_t)(void); + + extern void sys_ni_syscall(void); + +-const sys_call_ptr_t sys_call_table[] __cacheline_aligned = { ++const sys_call_ptr_t sys_call_table[] ____cacheline_aligned = { + /* + * Smells like a compiler bug -- it doesn't work + * when the & below is removed.