From 8e1fcce6537ca29e34ea03fa234ed0fe58f916cd Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 12 Feb 2020 20:09:15 -0800 Subject: [PATCH] 4.19-stable patches added patches: arc-add-missing-multicast-filter-number-to-gmac-node.patch arm-dts-am43xx-add-support-for-clkout1-clock.patch arm-dts-at91-reenable-uart-tx-pull-ups.patch arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch rtc-cmos-stop-using-shared-irq.patch rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch tools-power-acpi-fix-compilation-error.patch --- ...multicast-filter-number-to-gmac-node.patch | 32 +++ ...am43xx-add-support-for-clkout1-clock.patch | 97 ++++++++ ...m-dts-at91-reenable-uart-tx-pull-ups.patch | 224 ++++++++++++++++++ ...5d3-define-clock-rate-range-for-tcb1.patch | 35 +++ ...3-fix-maximum-peripheral-clock-rates.patch | 173 ++++++++++++++ ...el_mid_powerbtn-take-a-copy-of-ddata.patch | 40 ++++ ...as-functions-hcall-multi-tce-for-ddw.patch | 155 ++++++++++++ ...able-use-after-free-refcount-warning.patch | 62 +++++ .../rtc-cmos-stop-using-shared-irq.patch | 79 ++++++ ...l-if-the-time-is-known-to-be-invalid.patch | 35 +++ queue-4.19/series | 11 + ...ols-power-acpi-fix-compilation-error.patch | 50 ++++ 12 files changed, 993 insertions(+) create mode 100644 queue-4.19/arc-add-missing-multicast-filter-number-to-gmac-node.patch create mode 100644 queue-4.19/arm-dts-am43xx-add-support-for-clkout1-clock.patch create mode 100644 queue-4.19/arm-dts-at91-reenable-uart-tx-pull-ups.patch create mode 100644 queue-4.19/arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch create mode 100644 queue-4.19/arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch create mode 100644 queue-4.19/platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch create mode 100644 queue-4.19/powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch create mode 100644 queue-4.19/powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch create mode 100644 queue-4.19/rtc-cmos-stop-using-shared-irq.patch create mode 100644 queue-4.19/rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch create mode 100644 queue-4.19/tools-power-acpi-fix-compilation-error.patch diff --git a/queue-4.19/arc-add-missing-multicast-filter-number-to-gmac-node.patch b/queue-4.19/arc-add-missing-multicast-filter-number-to-gmac-node.patch new file mode 100644 index 00000000000..3015778dd29 --- /dev/null +++ b/queue-4.19/arc-add-missing-multicast-filter-number-to-gmac-node.patch @@ -0,0 +1,32 @@ +From 7980dff398f86a618f502378fa27cf7e77449afa Mon Sep 17 00:00:00 2001 +From: Jose Abreu +Date: Tue, 14 Jan 2020 17:09:24 +0100 +Subject: ARC: [plat-axs10x]: Add missing multicast filter number to GMAC node + +From: Jose Abreu + +commit 7980dff398f86a618f502378fa27cf7e77449afa upstream. + +Add a missing property to GMAC node so that multicast filtering works +correctly. + +Fixes: 556cc1c5f528 ("ARC: [axs101] Add support for AXS101 SDP (software development platform)") +Acked-by: Alexey Brodkin +Signed-off-by: Jose Abreu +Signed-off-by: Vineet Gupta +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arc/boot/dts/axs10x_mb.dtsi | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arc/boot/dts/axs10x_mb.dtsi ++++ b/arch/arc/boot/dts/axs10x_mb.dtsi +@@ -80,6 +80,7 @@ + interrupt-names = "macirq"; + phy-mode = "rgmii"; + snps,pbl = < 32 >; ++ snps,multicast-filter-bins = <256>; + clocks = <&apbclk>; + clock-names = "stmmaceth"; + max-speed = <100>; diff --git a/queue-4.19/arm-dts-am43xx-add-support-for-clkout1-clock.patch b/queue-4.19/arm-dts-am43xx-add-support-for-clkout1-clock.patch new file mode 100644 index 00000000000..6be7b3c5fd9 --- /dev/null +++ b/queue-4.19/arm-dts-am43xx-add-support-for-clkout1-clock.patch @@ -0,0 +1,97 @@ +From 01053dadb79d63b65f7b353e68b4b6ccf4effedb Mon Sep 17 00:00:00 2001 +From: Tero Kristo +Date: Wed, 11 Dec 2019 08:07:18 -0600 +Subject: ARM: dts: am43xx: add support for clkout1 clock + +From: Tero Kristo + +commit 01053dadb79d63b65f7b353e68b4b6ccf4effedb upstream. + +clkout1 clock node and its generation tree was missing. Add this based +on the data on TRM and PRCM functional spec. + +commit 664ae1ab2536 ("ARM: dts: am43xx: add clkctrl nodes") effectively +reverted this commit 8010f13a40d3 ("ARM: dts: am43xx: add support for +clkout1 clock") which is needed for the ov2659 camera sensor clock +definition hence it is being re-applied here. + +Note that because of the current dts node name dependency for mapping to +clock domain, we must still use "clkout1-*ck" naming instead of generic +"clock@" naming for the node. And because of this, it's probably best to +apply the dts node addition together along with the other clock changes. + +Fixes: 664ae1ab2536 ("ARM: dts: am43xx: add clkctrl nodes") +Signed-off-by: Tero Kristo +Tested-by: Benoit Parrot +Acked-by: Tony Lindgren +Signed-off-by: Benoit Parrot +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/am43xx-clocks.dtsi | 54 +++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +--- a/arch/arm/boot/dts/am43xx-clocks.dtsi ++++ b/arch/arm/boot/dts/am43xx-clocks.dtsi +@@ -707,6 +707,60 @@ + ti,bit-shift = <8>; + reg = <0x2a48>; + }; ++ ++ clkout1_osc_div_ck: clkout1-osc-div-ck { ++ #clock-cells = <0>; ++ compatible = "ti,divider-clock"; ++ clocks = <&sys_clkin_ck>; ++ ti,bit-shift = <20>; ++ ti,max-div = <4>; ++ reg = <0x4100>; ++ }; ++ ++ clkout1_src2_mux_ck: clkout1-src2-mux-ck { ++ #clock-cells = <0>; ++ compatible = "ti,mux-clock"; ++ clocks = <&clk_rc32k_ck>, <&sysclk_div>, <&dpll_ddr_m2_ck>, ++ <&dpll_per_m2_ck>, <&dpll_disp_m2_ck>, ++ <&dpll_mpu_m2_ck>; ++ reg = <0x4100>; ++ }; ++ ++ clkout1_src2_pre_div_ck: clkout1-src2-pre-div-ck { ++ #clock-cells = <0>; ++ compatible = "ti,divider-clock"; ++ clocks = <&clkout1_src2_mux_ck>; ++ ti,bit-shift = <4>; ++ ti,max-div = <8>; ++ reg = <0x4100>; ++ }; ++ ++ clkout1_src2_post_div_ck: clkout1-src2-post-div-ck { ++ #clock-cells = <0>; ++ compatible = "ti,divider-clock"; ++ clocks = <&clkout1_src2_pre_div_ck>; ++ ti,bit-shift = <8>; ++ ti,max-div = <32>; ++ ti,index-power-of-two; ++ reg = <0x4100>; ++ }; ++ ++ clkout1_mux_ck: clkout1-mux-ck { ++ #clock-cells = <0>; ++ compatible = "ti,mux-clock"; ++ clocks = <&clkout1_osc_div_ck>, <&clk_rc32k_ck>, ++ <&clkout1_src2_post_div_ck>, <&dpll_extdev_m2_ck>; ++ ti,bit-shift = <16>; ++ reg = <0x4100>; ++ }; ++ ++ clkout1_ck: clkout1-ck { ++ #clock-cells = <0>; ++ compatible = "ti,gate-clock"; ++ clocks = <&clkout1_mux_ck>; ++ ti,bit-shift = <23>; ++ reg = <0x4100>; ++ }; + }; + + &prcm { diff --git a/queue-4.19/arm-dts-at91-reenable-uart-tx-pull-ups.patch b/queue-4.19/arm-dts-at91-reenable-uart-tx-pull-ups.patch new file mode 100644 index 00000000000..8d3c032e7fa --- /dev/null +++ b/queue-4.19/arm-dts-at91-reenable-uart-tx-pull-ups.patch @@ -0,0 +1,224 @@ +From 9d39d86cd4af2b17b970d63307daad71f563d207 Mon Sep 17 00:00:00 2001 +From: Ingo van Lil +Date: Tue, 3 Dec 2019 15:21:47 +0100 +Subject: ARM: dts: at91: Reenable UART TX pull-ups + +From: Ingo van Lil + +commit 9d39d86cd4af2b17b970d63307daad71f563d207 upstream. + +Pull-ups for SAM9 UART/USART TX lines were disabled in a previous +commit. However, several chips in the SAM9 family require pull-ups to +prevent the TX lines from falling (and causing an endless break +condition) when the transceiver is disabled. + +From the SAM9G20 datasheet, 32.5.1: "To prevent the TXD line from +falling when the USART is disabled, the use of an internal pull up +is mandatory.". This commit reenables the pull-ups for all chips having +that sentence in their datasheets. + +Fixes: 5e04822f7db5 ("ARM: dts: at91: fixes uart pinctrl, set pullup on rx, clear pullup on tx") +Signed-off-by: Ingo van Lil +Cc: Peter Rosin +Link: https://lore.kernel.org/r/20191203142147.875227-1-inguin@gmx.de +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/at91sam9260.dtsi | 12 ++++++------ + arch/arm/boot/dts/at91sam9261.dtsi | 6 +++--- + arch/arm/boot/dts/at91sam9263.dtsi | 6 +++--- + arch/arm/boot/dts/at91sam9g45.dtsi | 8 ++++---- + arch/arm/boot/dts/at91sam9rl.dtsi | 8 ++++---- + 5 files changed, 20 insertions(+), 20 deletions(-) + +--- a/arch/arm/boot/dts/at91sam9260.dtsi ++++ b/arch/arm/boot/dts/at91sam9260.dtsi +@@ -434,7 +434,7 @@ + usart0 { + pinctrl_usart0: usart0-0 { + atmel,pins = +- ; + }; + +@@ -468,7 +468,7 @@ + usart1 { + pinctrl_usart1: usart1-0 { + atmel,pins = +- ; + }; + +@@ -486,7 +486,7 @@ + usart2 { + pinctrl_usart2: usart2-0 { + atmel,pins = +- ; + }; + +@@ -504,7 +504,7 @@ + usart3 { + pinctrl_usart3: usart3-0 { + atmel,pins = +- ; + }; + +@@ -522,7 +522,7 @@ + uart0 { + pinctrl_uart0: uart0-0 { + atmel,pins = +- ; + }; + }; +@@ -530,7 +530,7 @@ + uart1 { + pinctrl_uart1: uart1-0 { + atmel,pins = +- ; + }; + }; +--- a/arch/arm/boot/dts/at91sam9261.dtsi ++++ b/arch/arm/boot/dts/at91sam9261.dtsi +@@ -328,7 +328,7 @@ + usart0 { + pinctrl_usart0: usart0-0 { + atmel,pins = +- , ++ , + ; + }; + +@@ -346,7 +346,7 @@ + usart1 { + pinctrl_usart1: usart1-0 { + atmel,pins = +- , ++ , + ; + }; + +@@ -364,7 +364,7 @@ + usart2 { + pinctrl_usart2: usart2-0 { + atmel,pins = +- , ++ , + ; + }; + +--- a/arch/arm/boot/dts/at91sam9263.dtsi ++++ b/arch/arm/boot/dts/at91sam9263.dtsi +@@ -437,7 +437,7 @@ + usart0 { + pinctrl_usart0: usart0-0 { + atmel,pins = +- ; + }; + +@@ -455,7 +455,7 @@ + usart1 { + pinctrl_usart1: usart1-0 { + atmel,pins = +- ; + }; + +@@ -473,7 +473,7 @@ + usart2 { + pinctrl_usart2: usart2-0 { + atmel,pins = +- ; + }; + +--- a/arch/arm/boot/dts/at91sam9g45.dtsi ++++ b/arch/arm/boot/dts/at91sam9g45.dtsi +@@ -555,7 +555,7 @@ + usart0 { + pinctrl_usart0: usart0-0 { + atmel,pins = +- ; + }; + +@@ -573,7 +573,7 @@ + usart1 { + pinctrl_usart1: usart1-0 { + atmel,pins = +- ; + }; + +@@ -591,7 +591,7 @@ + usart2 { + pinctrl_usart2: usart2-0 { + atmel,pins = +- ; + }; + +@@ -609,7 +609,7 @@ + usart3 { + pinctrl_usart3: usart3-0 { + atmel,pins = +- ; + }; + +--- a/arch/arm/boot/dts/at91sam9rl.dtsi ++++ b/arch/arm/boot/dts/at91sam9rl.dtsi +@@ -681,7 +681,7 @@ + usart0 { + pinctrl_usart0: usart0-0 { + atmel,pins = +- , ++ , + ; + }; + +@@ -720,7 +720,7 @@ + usart1 { + pinctrl_usart1: usart1-0 { + atmel,pins = +- , ++ , + ; + }; + +@@ -743,7 +743,7 @@ + usart2 { + pinctrl_usart2: usart2-0 { + atmel,pins = +- , ++ , + ; + }; + +@@ -766,7 +766,7 @@ + usart3 { + pinctrl_usart3: usart3-0 { + atmel,pins = +- , ++ , + ; + }; + diff --git a/queue-4.19/arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch b/queue-4.19/arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch new file mode 100644 index 00000000000..8951c677ca1 --- /dev/null +++ b/queue-4.19/arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch @@ -0,0 +1,35 @@ +From a7e0f3fc01df4b1b7077df777c37feae8c9e8b6d Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Fri, 10 Jan 2020 18:20:07 +0100 +Subject: ARM: dts: at91: sama5d3: define clock rate range for tcb1 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alexandre Belloni + +commit a7e0f3fc01df4b1b7077df777c37feae8c9e8b6d upstream. + +The clock rate range for the TCB1 clock is missing. define it in the device +tree. + +Reported-by: Karl Rudbæk Olsen +Fixes: d2e8190b7916 ("ARM: at91/dt: define sama5d3 clocks") +Link: https://lore.kernel.org/r/20200110172007.1253659-2-alexandre.belloni@bootlin.com +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/sama5d3_tcb1.dtsi | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/boot/dts/sama5d3_tcb1.dtsi ++++ b/arch/arm/boot/dts/sama5d3_tcb1.dtsi +@@ -23,6 +23,7 @@ + tcb1_clk: tcb1_clk { + #clock-cells = <0>; + reg = <27>; ++ atmel,clk-output-range = <0 166000000>; + }; + }; + }; diff --git a/queue-4.19/arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch b/queue-4.19/arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch new file mode 100644 index 00000000000..780bf4fd825 --- /dev/null +++ b/queue-4.19/arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch @@ -0,0 +1,173 @@ +From ee0aa926ddb0bd8ba59e33e3803b3b5804e3f5da Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Fri, 10 Jan 2020 18:20:06 +0100 +Subject: ARM: dts: at91: sama5d3: fix maximum peripheral clock rates +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alexandre Belloni + +commit ee0aa926ddb0bd8ba59e33e3803b3b5804e3f5da upstream. + +Currently the maximum rate for peripheral clock is calculated based on a +typical 133MHz MCK. The maximum frequency is defined in the datasheet as a +ratio to MCK. Some sama5d3 platforms are using a 166MHz MCK. Update the +device trees to match the maximum rate based on 166MHz. + +Reported-by: Karl Rudbæk Olsen +Fixes: d2e8190b7916 ("ARM: at91/dt: define sama5d3 clocks") +Link: https://lore.kernel.org/r/20200110172007.1253659-1-alexandre.belloni@bootlin.com +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/sama5d3.dtsi | 28 ++++++++++++++-------------- + arch/arm/boot/dts/sama5d3_can.dtsi | 4 ++-- + arch/arm/boot/dts/sama5d3_uart.dtsi | 4 ++-- + 3 files changed, 18 insertions(+), 18 deletions(-) + +--- a/arch/arm/boot/dts/sama5d3.dtsi ++++ b/arch/arm/boot/dts/sama5d3.dtsi +@@ -1187,49 +1187,49 @@ + usart0_clk: usart0_clk { + #clock-cells = <0>; + reg = <12>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + usart1_clk: usart1_clk { + #clock-cells = <0>; + reg = <13>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + usart2_clk: usart2_clk { + #clock-cells = <0>; + reg = <14>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + usart3_clk: usart3_clk { + #clock-cells = <0>; + reg = <15>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + uart0_clk: uart0_clk { + #clock-cells = <0>; + reg = <16>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + twi0_clk: twi0_clk { + reg = <18>; + #clock-cells = <0>; +- atmel,clk-output-range = <0 16625000>; ++ atmel,clk-output-range = <0 41500000>; + }; + + twi1_clk: twi1_clk { + #clock-cells = <0>; + reg = <19>; +- atmel,clk-output-range = <0 16625000>; ++ atmel,clk-output-range = <0 41500000>; + }; + + twi2_clk: twi2_clk { + #clock-cells = <0>; + reg = <20>; +- atmel,clk-output-range = <0 16625000>; ++ atmel,clk-output-range = <0 41500000>; + }; + + mci0_clk: mci0_clk { +@@ -1245,19 +1245,19 @@ + spi0_clk: spi0_clk { + #clock-cells = <0>; + reg = <24>; +- atmel,clk-output-range = <0 133000000>; ++ atmel,clk-output-range = <0 166000000>; + }; + + spi1_clk: spi1_clk { + #clock-cells = <0>; + reg = <25>; +- atmel,clk-output-range = <0 133000000>; ++ atmel,clk-output-range = <0 166000000>; + }; + + tcb0_clk: tcb0_clk { + #clock-cells = <0>; + reg = <26>; +- atmel,clk-output-range = <0 133000000>; ++ atmel,clk-output-range = <0 166000000>; + }; + + pwm_clk: pwm_clk { +@@ -1268,7 +1268,7 @@ + adc_clk: adc_clk { + #clock-cells = <0>; + reg = <29>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + dma0_clk: dma0_clk { +@@ -1299,13 +1299,13 @@ + ssc0_clk: ssc0_clk { + #clock-cells = <0>; + reg = <38>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + ssc1_clk: ssc1_clk { + #clock-cells = <0>; + reg = <39>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + sha_clk: sha_clk { +--- a/arch/arm/boot/dts/sama5d3_can.dtsi ++++ b/arch/arm/boot/dts/sama5d3_can.dtsi +@@ -37,13 +37,13 @@ + can0_clk: can0_clk { + #clock-cells = <0>; + reg = <40>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + can1_clk: can1_clk { + #clock-cells = <0>; + reg = <41>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + }; + }; +--- a/arch/arm/boot/dts/sama5d3_uart.dtsi ++++ b/arch/arm/boot/dts/sama5d3_uart.dtsi +@@ -42,13 +42,13 @@ + uart0_clk: uart0_clk { + #clock-cells = <0>; + reg = <16>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + + uart1_clk: uart1_clk { + #clock-cells = <0>; + reg = <17>; +- atmel,clk-output-range = <0 66000000>; ++ atmel,clk-output-range = <0 83000000>; + }; + }; + }; diff --git a/queue-4.19/platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch b/queue-4.19/platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch new file mode 100644 index 00000000000..83ee6042e15 --- /dev/null +++ b/queue-4.19/platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch @@ -0,0 +1,40 @@ +From 5e0c94d3aeeecc68c573033f08d9678fecf253bd Mon Sep 17 00:00:00 2001 +From: Mika Westerberg +Date: Wed, 22 Jan 2020 19:05:20 +0300 +Subject: platform/x86: intel_mid_powerbtn: Take a copy of ddata + +From: Mika Westerberg + +commit 5e0c94d3aeeecc68c573033f08d9678fecf253bd upstream. + +The driver gets driver_data from memory that is marked as const (which +is probably put to read-only memory) and it then modifies it. This +likely causes some sort of fault to happen. + +Fix this by taking a copy of the structure. + +Fixes: c94a8ff14de3 ("platform/x86: intel_mid_powerbtn: make mid_pb_ddata const") +Signed-off-by: Mika Westerberg +Reviewed-by: Andy Shevchenko +Signed-off-by: Andy Shevchenko +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/intel_mid_powerbtn.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/platform/x86/intel_mid_powerbtn.c ++++ b/drivers/platform/x86/intel_mid_powerbtn.c +@@ -158,9 +158,10 @@ static int mid_pb_probe(struct platform_ + + input_set_capability(input, EV_KEY, KEY_POWER); + +- ddata = (struct mid_pb_ddata *)id->driver_data; ++ ddata = devm_kmemdup(&pdev->dev, (void *)id->driver_data, ++ sizeof(*ddata), GFP_KERNEL); + if (!ddata) +- return -ENODATA; ++ return -ENOMEM; + + ddata->dev = &pdev->dev; + ddata->irq = irq; diff --git a/queue-4.19/powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch b/queue-4.19/powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch new file mode 100644 index 00000000000..bc0f40af7e5 --- /dev/null +++ b/queue-4.19/powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch @@ -0,0 +1,155 @@ +From 7559d3d295f3365ea7ac0c0274c05e633fe4f594 Mon Sep 17 00:00:00 2001 +From: Alexey Kardashevskiy +Date: Mon, 16 Dec 2019 15:19:22 +1100 +Subject: powerpc/pseries: Allow not having ibm, hypertas-functions::hcall-multi-tce for DDW + +From: Alexey Kardashevskiy + +commit 7559d3d295f3365ea7ac0c0274c05e633fe4f594 upstream. + +By default a pseries guest supports a H_PUT_TCE hypercall which maps +a single IOMMU page in a DMA window. Additionally the hypervisor may +support H_PUT_TCE_INDIRECT/H_STUFF_TCE which update multiple TCEs at once; +this is advertised via the device tree /rtas/ibm,hypertas-functions +property which Linux converts to FW_FEATURE_MULTITCE. + +FW_FEATURE_MULTITCE is checked when dma_iommu_ops is used; however +the code managing the huge DMA window (DDW) ignores it and calls +H_PUT_TCE_INDIRECT even if it is explicitly disabled via +the "multitce=off" kernel command line parameter. + +This adds FW_FEATURE_MULTITCE checking to the DDW code path. + +This changes tce_build_pSeriesLP to take liobn and page size as +the huge window does not have iommu_table descriptor which usually +the place to store these numbers. + +Fixes: 4e8b0cf46b25 ("powerpc/pseries: Add support for dynamic dma windows") +Signed-off-by: Alexey Kardashevskiy +Reviewed-by: Thiago Jung Bauermann +Tested-by: Thiago Jung Bauermann +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20191216041924.42318-3-aik@ozlabs.ru +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/iommu.c | 43 ++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 14 deletions(-) + +--- a/arch/powerpc/platforms/pseries/iommu.c ++++ b/arch/powerpc/platforms/pseries/iommu.c +@@ -167,10 +167,10 @@ static unsigned long tce_get_pseries(str + return be64_to_cpu(*tcep); + } + +-static void tce_free_pSeriesLP(struct iommu_table*, long, long); ++static void tce_free_pSeriesLP(unsigned long liobn, long, long); + static void tce_freemulti_pSeriesLP(struct iommu_table*, long, long); + +-static int tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum, ++static int tce_build_pSeriesLP(unsigned long liobn, long tcenum, long tceshift, + long npages, unsigned long uaddr, + enum dma_data_direction direction, + unsigned long attrs) +@@ -181,25 +181,25 @@ static int tce_build_pSeriesLP(struct io + int ret = 0; + long tcenum_start = tcenum, npages_start = npages; + +- rpn = __pa(uaddr) >> TCE_SHIFT; ++ rpn = __pa(uaddr) >> tceshift; + proto_tce = TCE_PCI_READ; + if (direction != DMA_TO_DEVICE) + proto_tce |= TCE_PCI_WRITE; + + while (npages--) { +- tce = proto_tce | (rpn & TCE_RPN_MASK) << TCE_RPN_SHIFT; +- rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, tce); ++ tce = proto_tce | (rpn & TCE_RPN_MASK) << tceshift; ++ rc = plpar_tce_put((u64)liobn, (u64)tcenum << tceshift, tce); + + if (unlikely(rc == H_NOT_ENOUGH_RESOURCES)) { + ret = (int)rc; +- tce_free_pSeriesLP(tbl, tcenum_start, ++ tce_free_pSeriesLP(liobn, tcenum_start, + (npages_start - (npages + 1))); + break; + } + + if (rc && printk_ratelimit()) { + printk("tce_build_pSeriesLP: plpar_tce_put failed. rc=%lld\n", rc); +- printk("\tindex = 0x%llx\n", (u64)tbl->it_index); ++ printk("\tindex = 0x%llx\n", (u64)liobn); + printk("\ttcenum = 0x%llx\n", (u64)tcenum); + printk("\ttce val = 0x%llx\n", tce ); + dump_stack(); +@@ -228,7 +228,8 @@ static int tce_buildmulti_pSeriesLP(stru + unsigned long flags; + + if ((npages == 1) || !firmware_has_feature(FW_FEATURE_MULTITCE)) { +- return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, ++ return tce_build_pSeriesLP(tbl->it_index, tcenum, ++ tbl->it_page_shift, npages, uaddr, + direction, attrs); + } + +@@ -244,8 +245,9 @@ static int tce_buildmulti_pSeriesLP(stru + /* If allocation fails, fall back to the loop implementation */ + if (!tcep) { + local_irq_restore(flags); +- return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, +- direction, attrs); ++ return tce_build_pSeriesLP(tbl->it_index, tcenum, ++ tbl->it_page_shift, ++ npages, uaddr, direction, attrs); + } + __this_cpu_write(tce_page, tcep); + } +@@ -296,16 +298,16 @@ static int tce_buildmulti_pSeriesLP(stru + return ret; + } + +-static void tce_free_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages) ++static void tce_free_pSeriesLP(unsigned long liobn, long tcenum, long npages) + { + u64 rc; + + while (npages--) { +- rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, 0); ++ rc = plpar_tce_put((u64)liobn, (u64)tcenum << 12, 0); + + if (rc && printk_ratelimit()) { + printk("tce_free_pSeriesLP: plpar_tce_put failed. rc=%lld\n", rc); +- printk("\tindex = 0x%llx\n", (u64)tbl->it_index); ++ printk("\tindex = 0x%llx\n", (u64)liobn); + printk("\ttcenum = 0x%llx\n", (u64)tcenum); + dump_stack(); + } +@@ -320,7 +322,7 @@ static void tce_freemulti_pSeriesLP(stru + u64 rc; + + if (!firmware_has_feature(FW_FEATURE_MULTITCE)) +- return tce_free_pSeriesLP(tbl, tcenum, npages); ++ return tce_free_pSeriesLP(tbl->it_index, tcenum, npages); + + rc = plpar_tce_stuff((u64)tbl->it_index, (u64)tcenum << 12, 0, npages); + +@@ -435,6 +437,19 @@ static int tce_setrange_multi_pSeriesLP( + u64 rc = 0; + long l, limit; + ++ if (!firmware_has_feature(FW_FEATURE_MULTITCE)) { ++ unsigned long tceshift = be32_to_cpu(maprange->tce_shift); ++ unsigned long dmastart = (start_pfn << PAGE_SHIFT) + ++ be64_to_cpu(maprange->dma_base); ++ unsigned long tcenum = dmastart >> tceshift; ++ unsigned long npages = num_pfn << PAGE_SHIFT >> tceshift; ++ void *uaddr = __va(start_pfn << PAGE_SHIFT); ++ ++ return tce_build_pSeriesLP(be32_to_cpu(maprange->liobn), ++ tcenum, tceshift, npages, (unsigned long) uaddr, ++ DMA_BIDIRECTIONAL, 0); ++ } ++ + local_irq_disable(); /* to protect tcep and the page behind it */ + tcep = __this_cpu_read(tce_page); + diff --git a/queue-4.19/powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch b/queue-4.19/powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch new file mode 100644 index 00000000000..f3824745201 --- /dev/null +++ b/queue-4.19/powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch @@ -0,0 +1,62 @@ +From aff8c8242bc638ba57247ae1ec5f272ac3ed3b92 Mon Sep 17 00:00:00 2001 +From: Tyrel Datwyler +Date: Mon, 20 Jan 2020 14:10:02 -0800 +Subject: powerpc/pseries/vio: Fix iommu_table use-after-free refcount warning + +From: Tyrel Datwyler + +commit aff8c8242bc638ba57247ae1ec5f272ac3ed3b92 upstream. + +Commit e5afdf9dd515 ("powerpc/vfio_spapr_tce: Add reference counting to +iommu_table") missed an iommu_table allocation in the pseries vio code. +The iommu_table is allocated with kzalloc and as a result the associated +kref gets a value of zero. This has the side effect that during a DLPAR +remove of the associated virtual IOA the iommu_tce_table_put() triggers +a use-after-free underflow warning. + +Call Trace: +[c0000002879e39f0] [c00000000071ecb4] refcount_warn_saturate+0x184/0x190 +(unreliable) +[c0000002879e3a50] [c0000000000500ac] iommu_tce_table_put+0x9c/0xb0 +[c0000002879e3a70] [c0000000000f54e4] vio_dev_release+0x34/0x70 +[c0000002879e3aa0] [c00000000087cfa4] device_release+0x54/0xf0 +[c0000002879e3b10] [c000000000d64c84] kobject_cleanup+0xa4/0x240 +[c0000002879e3b90] [c00000000087d358] put_device+0x28/0x40 +[c0000002879e3bb0] [c0000000007a328c] dlpar_remove_slot+0x15c/0x250 +[c0000002879e3c50] [c0000000007a348c] remove_slot_store+0xac/0xf0 +[c0000002879e3cd0] [c000000000d64220] kobj_attr_store+0x30/0x60 +[c0000002879e3cf0] [c0000000004ff13c] sysfs_kf_write+0x6c/0xa0 +[c0000002879e3d10] [c0000000004fde4c] kernfs_fop_write+0x18c/0x260 +[c0000002879e3d60] [c000000000410f3c] __vfs_write+0x3c/0x70 +[c0000002879e3d80] [c000000000415408] vfs_write+0xc8/0x250 +[c0000002879e3dd0] [c0000000004157dc] ksys_write+0x7c/0x120 +[c0000002879e3e20] [c00000000000b278] system_call+0x5c/0x68 + +Further, since the refcount was always zero the iommu_tce_table_put() +fails to call the iommu_table release function resulting in a leak. + +Fix this issue be initilizing the iommu_table kref immediately after +allocation. + +Fixes: e5afdf9dd515 ("powerpc/vfio_spapr_tce: Add reference counting to iommu_table") +Signed-off-by: Tyrel Datwyler +Reviewed-by: Alexey Kardashevskiy +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/1579558202-26052-1-git-send-email-tyreld@linux.ibm.com +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/vio.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/powerpc/platforms/pseries/vio.c ++++ b/arch/powerpc/platforms/pseries/vio.c +@@ -1195,6 +1195,8 @@ static struct iommu_table *vio_build_iom + if (tbl == NULL) + return NULL; + ++ kref_init(&tbl->it_kref); ++ + of_parse_dma_window(dev->dev.of_node, dma_window, + &tbl->it_index, &offset, &size); + diff --git a/queue-4.19/rtc-cmos-stop-using-shared-irq.patch b/queue-4.19/rtc-cmos-stop-using-shared-irq.patch new file mode 100644 index 00000000000..a65e1d0f219 --- /dev/null +++ b/queue-4.19/rtc-cmos-stop-using-shared-irq.patch @@ -0,0 +1,79 @@ +From b6da197a2e9670df6f07e6698629e9ce95ab614e Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Thu, 23 Jan 2020 15:14:35 +0200 +Subject: rtc: cmos: Stop using shared IRQ + +From: Andy Shevchenko + +commit b6da197a2e9670df6f07e6698629e9ce95ab614e upstream. + +As reported by Guilherme G. Piccoli: + +---8<---8<---8<--- + +The rtc-cmos interrupt setting was changed in the commit 079062b28fb4 +("rtc: cmos: prevent kernel warning on IRQ flags mismatch") in order +to allow shared interrupts; according to that commit's description, +some machine got kernel warnings due to the interrupt line being shared +between rtc-cmos and other hardware, and rtc-cmos didn't allow IRQ sharing +that time. + +After the aforementioned commit though it was observed a huge increase +in lost HPET interrupts in some systems, observed through the following +kernel message: + +[...] hpet1: lost 35 rtc interrupts + +After investigation, it was narrowed down to the shared interrupts +usage when having the kernel option "irqpoll" enabled. In this case, +all IRQ handlers are called for non-timer interrupts, if such handlers +are setup in shared IRQ lines. The rtc-cmos IRQ handler could be set to +hpet_rtc_interrupt(), which will produce the kernel "lost interrupts" +message after doing work - lots of readl/writel to HPET registers, which +are known to be slow. + +Although "irqpoll" is not a default kernel option, it's used in some contexts, +one being the kdump kernel (which is an already "impaired" kernel usually +running with 1 CPU available), so the performance burden could be considerable. +Also, the same issue would happen (in a shorter extent though) when using +"irqfixup" kernel option. + +In a quick experiment, a virtual machine with uptime of 2 minutes produced +>300 calls to hpet_rtc_interrupt() when "irqpoll" was set, whereas without +sharing interrupts this number reduced to 1 interrupt. Machines with more +hardware than a VM should generate even more unnecessary HPET interrupts +in this scenario. + +---8<---8<---8<--- + +After looking into the rtc-cmos driver history and DSDT table from +the Microsoft Surface 3, we may notice that Hans de Goede submitted +a correct fix (see dependency below). Thus, we simply revert +the culprit commit. + +Fixes: 079062b28fb4 ("rtc: cmos: prevent kernel warning on IRQ flags mismatch") +Depends-on: a1e23a42f1bd ("rtc: cmos: Do not assume irq 8 for rtc when there are no legacy irqs") +Reported-by: Guilherme G. Piccoli +Cc: Hans de Goede +Signed-off-by: Andy Shevchenko +Tested-by: Guilherme G. Piccoli +Reviewed-by: Hans de Goede +Link: https://lore.kernel.org/r/20200123131437.28157-1-andriy.shevchenko@linux.intel.com +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/rtc/rtc-cmos.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/rtc/rtc-cmos.c ++++ b/drivers/rtc/rtc-cmos.c +@@ -854,7 +854,7 @@ cmos_do_probe(struct device *dev, struct + rtc_cmos_int_handler = cmos_interrupt; + + retval = request_irq(rtc_irq, rtc_cmos_int_handler, +- IRQF_SHARED, dev_name(&cmos_rtc.rtc->dev), ++ 0, dev_name(&cmos_rtc.rtc->dev), + cmos_rtc.rtc); + if (retval < 0) { + dev_dbg(dev, "IRQ %d is already in use\n", rtc_irq); diff --git a/queue-4.19/rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch b/queue-4.19/rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch new file mode 100644 index 00000000000..7ee07a5a9b8 --- /dev/null +++ b/queue-4.19/rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch @@ -0,0 +1,35 @@ +From f236a2a2ebabad0848ad0995af7ad1dc7029e895 Mon Sep 17 00:00:00 2001 +From: Paul Kocialkowski +Date: Thu, 12 Dec 2019 16:31:10 +0100 +Subject: rtc: hym8563: Return -EINVAL if the time is known to be invalid + +From: Paul Kocialkowski + +commit f236a2a2ebabad0848ad0995af7ad1dc7029e895 upstream. + +The current code returns -EPERM when the voltage loss bit is set. +Since the bit indicates that the time value is not valid, return +-EINVAL instead, which is the appropriate error code for this +situation. + +Fixes: dcaf03849352 ("rtc: add hym8563 rtc-driver") +Signed-off-by: Paul Kocialkowski +Link: https://lore.kernel.org/r/20191212153111.966923-1-paul.kocialkowski@bootlin.com +Signed-off-by: Alexandre Belloni +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/rtc/rtc-hym8563.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/rtc/rtc-hym8563.c ++++ b/drivers/rtc/rtc-hym8563.c +@@ -105,7 +105,7 @@ static int hym8563_rtc_read_time(struct + + if (!hym8563->valid) { + dev_warn(&client->dev, "no valid clock/calendar values available\n"); +- return -EPERM; ++ return -EINVAL; + } + + ret = i2c_smbus_read_i2c_block_data(client, HYM8563_SEC, 7, buf); diff --git a/queue-4.19/series b/queue-4.19/series index bf22767d4dd..6b2e8d048ed 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -17,3 +17,14 @@ serial-uartps-add-a-timeout-to-the-tx-empty-wait.patch gpio-zynq-report-gpio-direction-at-boot.patch spi-spi-mem-add-extra-sanity-checks-on-the-op-param.patch spi-spi-mem-fix-inverted-logic-in-op-sanity-check.patch +rtc-hym8563-return-einval-if-the-time-is-known-to-be-invalid.patch +rtc-cmos-stop-using-shared-irq.patch +arc-add-missing-multicast-filter-number-to-gmac-node.patch +platform-x86-intel_mid_powerbtn-take-a-copy-of-ddata.patch +arm-dts-at91-reenable-uart-tx-pull-ups.patch +arm-dts-am43xx-add-support-for-clkout1-clock.patch +arm-dts-at91-sama5d3-fix-maximum-peripheral-clock-rates.patch +arm-dts-at91-sama5d3-define-clock-rate-range-for-tcb1.patch +tools-power-acpi-fix-compilation-error.patch +powerpc-pseries-vio-fix-iommu_table-use-after-free-refcount-warning.patch +powerpc-pseries-allow-not-having-ibm-hypertas-functions-hcall-multi-tce-for-ddw.patch diff --git a/queue-4.19/tools-power-acpi-fix-compilation-error.patch b/queue-4.19/tools-power-acpi-fix-compilation-error.patch new file mode 100644 index 00000000000..c575fc461ec --- /dev/null +++ b/queue-4.19/tools-power-acpi-fix-compilation-error.patch @@ -0,0 +1,50 @@ +From 1985f8c7f9a42a651a9750d6fcadc74336d182df Mon Sep 17 00:00:00 2001 +From: Zhengyuan Liu +Date: Sat, 14 Dec 2019 00:27:12 +0800 +Subject: tools/power/acpi: fix compilation error + +From: Zhengyuan Liu + +commit 1985f8c7f9a42a651a9750d6fcadc74336d182df upstream. + +If we compile tools/acpi target in the top source directory, we'd get a +compilation error showing as bellow: + + # make tools/acpi + DESCEND power/acpi + DESCEND tools/acpidbg + CC tools/acpidbg/acpidbg.o + Assembler messages: + Fatal error: can't create /home/lzy/kernel-upstream/power/acpi/\ + tools/acpidbg/acpidbg.o: No such file or directory + ../../Makefile.rules:26: recipe for target '/home/lzy/kernel-upstream/\ + power/acpi/tools/acpidbg/acpidbg.o' failed + make[3]: *** [/home/lzy/kernel-upstream//power/acpi/tools/acpidbg/\ + acpidbg.o] Error 1 + Makefile:19: recipe for target 'acpidbg' failed + make[2]: *** [acpidbg] Error 2 + Makefile:54: recipe for target 'acpi' failed + make[1]: *** [acpi] Error 2 + Makefile:1607: recipe for target 'tools/acpi' failed + make: *** [tools/acpi] Error 2 + +Fixes: d5a4b1a540b8 ("tools/power/acpi: Remove direct kernel source include reference") +Signed-off-by: Zhengyuan Liu +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + tools/power/acpi/Makefile.config | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/tools/power/acpi/Makefile.config ++++ b/tools/power/acpi/Makefile.config +@@ -18,7 +18,7 @@ include $(srctree)/../../scripts/Makefil + + OUTPUT=$(srctree)/ + ifeq ("$(origin O)", "command line") +- OUTPUT := $(O)/power/acpi/ ++ OUTPUT := $(O)/tools/power/acpi/ + endif + #$(info Determined 'OUTPUT' to be $(OUTPUT)) + -- 2.47.3