From: Greg Kroah-Hartman Date: Tue, 10 Mar 2020 11:21:27 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.4.216~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba1260f438adac4fa59411ccc3214f70e6167ebc;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: arm-dts-am437x-idk-evm-fix-incorrect-opp-node-names.patch arm-dts-dra7xx-clocks-fixup-ipu1-mux-clock-parent-source.patch arm-dts-imx6dl-colibri-eval-v3-fix-sram-compatible-properties.patch arm-dts-imx7-colibri-fix-frequency-for-sd-mmc.patch arm-imx-build-v7_cpu_resume-unconditionally.patch arm64-dts-meson-fix-gxm-khadas-vim2-wifi.patch bus-ti-sysc-fix-1-wire-reset-quirk.patch dma-buf-free-dmabuf-name-in-dma_buf_release.patch dmaengine-coh901318-fix-a-double-lock-bug-in-dma_tc_handle.patch edac-synopsys-do-not-print-an-error-with-back-to-back-snprintf-calls.patch efi-read_once-rng-seed-size-before-munmap.patch efi-x86-align-guids-to-their-size-in-the-mixed-mode-runtime-wrapper.patch efi-x86-handle-by-ref-arguments-covering-multiple-pages-in-mixed-mode.patch hwmon-adt7462-fix-an-error-return-in-adt7462_reg_volt.patch powerpc-fix-hardware-pmu-exception-bug-on-powervm-compatibility-mode-systems.patch --- diff --git a/queue-5.4/arm-dts-am437x-idk-evm-fix-incorrect-opp-node-names.patch b/queue-5.4/arm-dts-am437x-idk-evm-fix-incorrect-opp-node-names.patch new file mode 100644 index 00000000000..669d2531c0f --- /dev/null +++ b/queue-5.4/arm-dts-am437x-idk-evm-fix-incorrect-opp-node-names.patch @@ -0,0 +1,45 @@ +From 31623468be0bf57617b8057dcd335693935a9491 Mon Sep 17 00:00:00 2001 +From: Suman Anna +Date: Mon, 10 Feb 2020 15:04:23 -0600 +Subject: ARM: dts: am437x-idk-evm: Fix incorrect OPP node names + +From: Suman Anna + +commit 31623468be0bf57617b8057dcd335693935a9491 upstream. + +The commit 337c6c9a69af ("ARM: dts: am437x-idk-evm: Disable +OPP50 for MPU") adjusts couple of OPP nodes defined in the +common am4372.dtsi file, but used outdated node names. This +results in these getting treated as new OPP nodes with missing +properties. + +Fix this properly by using the correct node names as updated in +commit b9cb2ba71848 ("ARM: dts: Use - instead of @ for DT OPP +entries for TI SoCs"). + +Reported-by: Roger Quadros +Fixes: 337c6c9a69af ("ARM: dts: am437x-idk-evm: Disable OPP50 for MPU") +Signed-off-by: Suman Anna +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/am437x-idk-evm.dts | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/boot/dts/am437x-idk-evm.dts ++++ b/arch/arm/boot/dts/am437x-idk-evm.dts +@@ -526,11 +526,11 @@ + * Supply voltage supervisor on board will not allow opp50 so + * disable it and set opp100 as suspend OPP. + */ +- opp50@300000000 { ++ opp50-300000000 { + status = "disabled"; + }; + +- opp100@600000000 { ++ opp100-600000000 { + opp-suspend; + }; + }; diff --git a/queue-5.4/arm-dts-dra7xx-clocks-fixup-ipu1-mux-clock-parent-source.patch b/queue-5.4/arm-dts-dra7xx-clocks-fixup-ipu1-mux-clock-parent-source.patch new file mode 100644 index 00000000000..7cced1dc2a7 --- /dev/null +++ b/queue-5.4/arm-dts-dra7xx-clocks-fixup-ipu1-mux-clock-parent-source.patch @@ -0,0 +1,59 @@ +From 78722d37b2b4cf9178295e2aa5510880e6135fd7 Mon Sep 17 00:00:00 2001 +From: Suman Anna +Date: Tue, 11 Feb 2020 09:51:03 -0600 +Subject: ARM: dts: dra7xx-clocks: Fixup IPU1 mux clock parent source + +From: Suman Anna + +commit 78722d37b2b4cf9178295e2aa5510880e6135fd7 upstream. + +The IPU1 functional clock is the output of a mux clock (represented +by ipu1_gfclk_mux previously) and the clock source for this has been +updated to be sourced from dpll_core_h22x2_ck in commit 39879c7d963e +("ARM: dts: dra7xx-clocks: Source IPU1 functional clock from CORE DPLL"). +ipu1_gfclk_mux is an obsolete clock now with the clkctrl conversion, +and this clock source parenting is lost during the new clkctrl layout +conversion. + +Remove this stale clock and fix up the clock source for this mux +clock using the latest equivalent clkctrl clock. This restores the +previous logic and ensures that the IPU1 continues to run at the +same frequency of IPU2 and independent of the ABE DPLL. + +Fixes: b5f8ffbb6fad ("ARM: dts: dra7: convert to use new clkctrl layout") +Signed-off-by: Suman Anna +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/dra7xx-clocks.dtsi | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi ++++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi +@@ -796,16 +796,6 @@ + clock-div = <1>; + }; + +- ipu1_gfclk_mux: ipu1_gfclk_mux@520 { +- #clock-cells = <0>; +- compatible = "ti,mux-clock"; +- clocks = <&dpll_abe_m2x2_ck>, <&dpll_core_h22x2_ck>; +- ti,bit-shift = <24>; +- reg = <0x0520>; +- assigned-clocks = <&ipu1_gfclk_mux>; +- assigned-clock-parents = <&dpll_core_h22x2_ck>; +- }; +- + dummy_ck: dummy_ck { + #clock-cells = <0>; + compatible = "fixed-clock"; +@@ -1564,6 +1554,8 @@ + compatible = "ti,clkctrl"; + reg = <0x20 0x4>; + #clock-cells = <2>; ++ assigned-clocks = <&ipu1_clkctrl DRA7_IPU1_MMU_IPU1_CLKCTRL 24>; ++ assigned-clock-parents = <&dpll_core_h22x2_ck>; + }; + + ipu_clkctrl: ipu-clkctrl@50 { diff --git a/queue-5.4/arm-dts-imx6dl-colibri-eval-v3-fix-sram-compatible-properties.patch b/queue-5.4/arm-dts-imx6dl-colibri-eval-v3-fix-sram-compatible-properties.patch new file mode 100644 index 00000000000..d276b83b8db --- /dev/null +++ b/queue-5.4/arm-dts-imx6dl-colibri-eval-v3-fix-sram-compatible-properties.patch @@ -0,0 +1,52 @@ +From bcbf53a0dab50980867476994f6079c1ec5bb3a3 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Wed, 12 Feb 2020 11:46:29 +0100 +Subject: ARM: dts: imx6dl-colibri-eval-v3: fix sram compatible properties + +From: Johan Hovold + +commit bcbf53a0dab50980867476994f6079c1ec5bb3a3 upstream. + +The sram-node compatible properties have mistakingly combined the +model-specific string with the generic "mtd-ram" string. + +Note that neither "cy7c1019dv33-10zsxi, mtd-ram" or +"cy7c1019dv33-10zsxi" are used by any in-kernel driver and they are +not present in any binding. + +The physmap driver will however bind to platform devices that specify +"mtd-ram". + +Fixes: fc48e76489fd ("ARM: dts: imx6: Add support for Toradex Colibri iMX6 module") +Cc: Sanchayan Maity +Cc: Marcel Ziswiler +Cc: Shawn Guo +Signed-off-by: Johan Hovold +Reviewed-by: Oleksandr Suvorov +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts ++++ b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts +@@ -236,7 +236,7 @@ + + /* SRAM on Colibri nEXT_CS0 */ + sram@0,0 { +- compatible = "cypress,cy7c1019dv33-10zsxi, mtd-ram"; ++ compatible = "cypress,cy7c1019dv33-10zsxi", "mtd-ram"; + reg = <0 0 0x00010000>; + #address-cells = <1>; + #size-cells = <1>; +@@ -247,7 +247,7 @@ + + /* SRAM on Colibri nEXT_CS1 */ + sram@1,0 { +- compatible = "cypress,cy7c1019dv33-10zsxi, mtd-ram"; ++ compatible = "cypress,cy7c1019dv33-10zsxi", "mtd-ram"; + reg = <1 0 0x00010000>; + #address-cells = <1>; + #size-cells = <1>; diff --git a/queue-5.4/arm-dts-imx7-colibri-fix-frequency-for-sd-mmc.patch b/queue-5.4/arm-dts-imx7-colibri-fix-frequency-for-sd-mmc.patch new file mode 100644 index 00000000000..74beff2fc86 --- /dev/null +++ b/queue-5.4/arm-dts-imx7-colibri-fix-frequency-for-sd-mmc.patch @@ -0,0 +1,47 @@ +From 2773fe1d31c42ffae2a9cb9a6055d99dd86e2fee Mon Sep 17 00:00:00 2001 +From: Oleksandr Suvorov +Date: Wed, 19 Feb 2020 13:11:24 +0000 +Subject: ARM: dts: imx7-colibri: Fix frequency for sd/mmc + +From: Oleksandr Suvorov + +commit 2773fe1d31c42ffae2a9cb9a6055d99dd86e2fee upstream. + +SD/MMC on Colibri iMX7S/D modules successfully support +200Mhz frequency in HS200 mode. + +Removing the unnecessary max-frequency limit significantly +increases the performance: + +== before fix ==== +root@colibri-imx7-emmc:~# hdparm -t /dev/mmcblk0 +/dev/mmcblk0: + Timing buffered disk reads: 252 MB in 3.02 seconds = 83.54 MB/sec +================== + +=== after fix ==== +root@colibri-imx7-emmc:~# hdparm -t /dev/mmcblk0 +/dev/mmcblk0: + Timing buffered disk reads: 408 MB in 3.00 seconds = 135.94 MB/sec +================== + +Fixes: f928a4a377e4 ("ARM: dts: imx7: add Toradex Colibri iMX7D 1GB (eMMC) support") +Signed-off-by: Oleksandr Suvorov +Reviewed-by: Fabio Estevam +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/boot/dts/imx7-colibri.dtsi | 1 - + 1 file changed, 1 deletion(-) + +--- a/arch/arm/boot/dts/imx7-colibri.dtsi ++++ b/arch/arm/boot/dts/imx7-colibri.dtsi +@@ -337,7 +337,6 @@ + assigned-clock-rates = <400000000>; + bus-width = <8>; + fsl,tuning-step = <2>; +- max-frequency = <100000000>; + vmmc-supply = <®_module_3v3>; + vqmmc-supply = <®_DCDC3>; + non-removable; diff --git a/queue-5.4/arm-imx-build-v7_cpu_resume-unconditionally.patch b/queue-5.4/arm-imx-build-v7_cpu_resume-unconditionally.patch new file mode 100644 index 00000000000..149db83273e --- /dev/null +++ b/queue-5.4/arm-imx-build-v7_cpu_resume-unconditionally.patch @@ -0,0 +1,119 @@ +From 512a928affd51c2dc631401e56ad5ee5d5dd68b6 Mon Sep 17 00:00:00 2001 +From: Ahmad Fatoum +Date: Thu, 16 Jan 2020 15:18:49 +0100 +Subject: ARM: imx: build v7_cpu_resume() unconditionally + +From: Ahmad Fatoum + +commit 512a928affd51c2dc631401e56ad5ee5d5dd68b6 upstream. + +This function is not only needed by the platform suspend code, but is also +reused as the CPU resume function when the ARM cores can be powered down +completely in deep idle, which is the case on i.MX6SX and i.MX6UL(L). + +Providing the static inline stub whenever CONFIG_SUSPEND is disabled means +that those platforms will hang on resume from cpuidle if suspend is disabled. + +So there are two problems: + + - The static inline stub masks the linker error + - The function is not available where needed + +Fix both by just building the function unconditionally, when +CONFIG_SOC_IMX6 is enabled. The actual code is three instructions long, +so it's arguably ok to just leave it in for all i.MX6 kernel configurations. + +Fixes: 05136f0897b5 ("ARM: imx: support arm power off in cpuidle for i.mx6sx") +Signed-off-by: Lucas Stach +Signed-off-by: Ahmad Fatoum +Signed-off-by: Rouven Czerwinski +Signed-off-by: Shawn Guo +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-imx/Makefile | 2 ++ + arch/arm/mach-imx/common.h | 4 ++-- + arch/arm/mach-imx/resume-imx6.S | 24 ++++++++++++++++++++++++ + arch/arm/mach-imx/suspend-imx6.S | 14 -------------- + 4 files changed, 28 insertions(+), 16 deletions(-) + +--- a/arch/arm/mach-imx/Makefile ++++ b/arch/arm/mach-imx/Makefile +@@ -91,6 +91,8 @@ AFLAGS_suspend-imx6.o :=-Wa,-march=armv7 + obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o + obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o + endif ++AFLAGS_resume-imx6.o :=-Wa,-march=armv7-a ++obj-$(CONFIG_SOC_IMX6) += resume-imx6.o + obj-$(CONFIG_SOC_IMX6) += pm-imx6.o + + obj-$(CONFIG_SOC_IMX1) += mach-imx1.o +--- a/arch/arm/mach-imx/common.h ++++ b/arch/arm/mach-imx/common.h +@@ -109,17 +109,17 @@ void imx_cpu_die(unsigned int cpu); + int imx_cpu_kill(unsigned int cpu); + + #ifdef CONFIG_SUSPEND +-void v7_cpu_resume(void); + void imx53_suspend(void __iomem *ocram_vbase); + extern const u32 imx53_suspend_sz; + void imx6_suspend(void __iomem *ocram_vbase); + #else +-static inline void v7_cpu_resume(void) {} + static inline void imx53_suspend(void __iomem *ocram_vbase) {} + static const u32 imx53_suspend_sz; + static inline void imx6_suspend(void __iomem *ocram_vbase) {} + #endif + ++void v7_cpu_resume(void); ++ + void imx6_pm_ccm_init(const char *ccm_compat); + void imx6q_pm_init(void); + void imx6dl_pm_init(void); +--- /dev/null ++++ b/arch/arm/mach-imx/resume-imx6.S +@@ -0,0 +1,24 @@ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++/* ++ * Copyright 2014 Freescale Semiconductor, Inc. ++ */ ++ ++#include ++#include ++#include ++#include ++#include "hardware.h" ++ ++/* ++ * The following code must assume it is running from physical address ++ * where absolute virtual addresses to the data section have to be ++ * turned into relative ones. ++ */ ++ ++ENTRY(v7_cpu_resume) ++ bl v7_invalidate_l1 ++#ifdef CONFIG_CACHE_L2X0 ++ bl l2c310_early_resume ++#endif ++ b cpu_resume ++ENDPROC(v7_cpu_resume) +--- a/arch/arm/mach-imx/suspend-imx6.S ++++ b/arch/arm/mach-imx/suspend-imx6.S +@@ -327,17 +327,3 @@ resume: + + ret lr + ENDPROC(imx6_suspend) +- +-/* +- * The following code must assume it is running from physical address +- * where absolute virtual addresses to the data section have to be +- * turned into relative ones. +- */ +- +-ENTRY(v7_cpu_resume) +- bl v7_invalidate_l1 +-#ifdef CONFIG_CACHE_L2X0 +- bl l2c310_early_resume +-#endif +- b cpu_resume +-ENDPROC(v7_cpu_resume) diff --git a/queue-5.4/arm64-dts-meson-fix-gxm-khadas-vim2-wifi.patch b/queue-5.4/arm64-dts-meson-fix-gxm-khadas-vim2-wifi.patch new file mode 100644 index 00000000000..b358eea6783 --- /dev/null +++ b/queue-5.4/arm64-dts-meson-fix-gxm-khadas-vim2-wifi.patch @@ -0,0 +1,47 @@ +From 146033562e7e5d1c9aae9653986806664995f1d5 Mon Sep 17 00:00:00 2001 +From: Christian Hewitt +Date: Thu, 20 Feb 2020 19:33:10 +0400 +Subject: arm64: dts: meson: fix gxm-khadas-vim2 wifi + +From: Christian Hewitt + +commit 146033562e7e5d1c9aae9653986806664995f1d5 upstream. + +before + +[6.418252] brcmfmac: F1 signature read @0x18000000=0x17224356 +[6.435663] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2 +[6.551259] brcmfmac: brcmf_sdiod_ramrw: membytes transfer failed +[6.551275] brcmfmac: brcmf_sdio_verifymemory: error -84 on reading 2048 membytes at 0x00184000 +[6.551352] brcmfmac: brcmf_sdio_download_firmware: dongle image file download failed + +after + +[6.657165] brcmfmac: F1 signature read @0x18000000=0x17224356 +[6.660807] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2 +[6.918643] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2 +[6.918734] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available +[6.922724] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4356/2 wl0: Jun 16 2015 14:25:06 version 7.35.184.r1 (TOB) (r559293) FWID 01-b22ae69c + +Fixes: adc52bf7ef16 ("arm64: dts: meson: fix mmc v2 chips max frequencies") +Suggested-by: Art Nikpal +Signed-off-by: Christian Hewitt +Signed-off-by: Kevin Hilman +Link: https://lore.kernel.org/r/1582212790-11402-1-git-send-email-christianshewitt@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts +@@ -327,7 +327,7 @@ + #size-cells = <0>; + + bus-width = <4>; +- max-frequency = <50000000>; ++ max-frequency = <60000000>; + + non-removable; + disable-wp; diff --git a/queue-5.4/bus-ti-sysc-fix-1-wire-reset-quirk.patch b/queue-5.4/bus-ti-sysc-fix-1-wire-reset-quirk.patch new file mode 100644 index 00000000000..aba4c510500 --- /dev/null +++ b/queue-5.4/bus-ti-sysc-fix-1-wire-reset-quirk.patch @@ -0,0 +1,41 @@ +From aec551c7a00fb7eae049c0c4cc3208ca53e26355 Mon Sep 17 00:00:00 2001 +From: Tony Lindgren +Date: Mon, 24 Feb 2020 12:58:03 -0800 +Subject: bus: ti-sysc: Fix 1-wire reset quirk + +From: Tony Lindgren + +commit aec551c7a00fb7eae049c0c4cc3208ca53e26355 upstream. + +Because of the i2c quirk we have the reset quirks named in a confusing +way. Let's fix the 1-wire quirk accordinlyg. Then let's switch to using +better naming later on. + +Fixes: 4e23be473e30 ("bus: ti-sysc: Add support for module specific reset quirks") +Signed-off-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/bus/ti-sysc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/bus/ti-sysc.c ++++ b/drivers/bus/ti-sysc.c +@@ -1406,7 +1406,7 @@ static void sysc_init_revision_quirks(st + } + + /* 1-wire needs module's internal clocks enabled for reset */ +-static void sysc_clk_enable_quirk_hdq1w(struct sysc *ddata) ++static void sysc_pre_reset_quirk_hdq1w(struct sysc *ddata) + { + int offset = 0x0c; /* HDQ_CTRL_STATUS */ + u16 val; +@@ -1494,7 +1494,7 @@ static void sysc_init_module_quirks(stru + return; + + if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_HDQ1W) { +- ddata->clk_enable_quirk = sysc_clk_enable_quirk_hdq1w; ++ ddata->clk_disable_quirk = sysc_pre_reset_quirk_hdq1w; + + return; + } diff --git a/queue-5.4/dma-buf-free-dmabuf-name-in-dma_buf_release.patch b/queue-5.4/dma-buf-free-dmabuf-name-in-dma_buf_release.patch new file mode 100644 index 00000000000..8ff481e2dd6 --- /dev/null +++ b/queue-5.4/dma-buf-free-dmabuf-name-in-dma_buf_release.patch @@ -0,0 +1,39 @@ +From d1f37226431f5d9657aa144a40f2383adbcf27e1 Mon Sep 17 00:00:00 2001 +From: Cong Wang +Date: Thu, 26 Dec 2019 22:32:04 -0800 +Subject: dma-buf: free dmabuf->name in dma_buf_release() + +From: Cong Wang + +commit d1f37226431f5d9657aa144a40f2383adbcf27e1 upstream. + +dma-buf name can be set via DMA_BUF_SET_NAME ioctl, but once set +it never gets freed. + +Free it in dma_buf_release(). + +Fixes: bb2bb9030425 ("dma-buf: add DMA_BUF_SET_NAME ioctls") +Reported-by: syzbot+b2098bc44728a4efb3e9@syzkaller.appspotmail.com +Cc: Greg Hackmann +Cc: Chenbo Feng +Cc: Sumit Semwal +Signed-off-by: Cong Wang +Acked-by: Chenbo Feng +Signed-off-by: Sumit Semwal +Link: https://patchwork.freedesktop.org/patch/msgid/20191227063204.5813-1-xiyou.wangcong@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/dma-buf/dma-buf.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -108,6 +108,7 @@ static int dma_buf_release(struct inode + dma_resv_fini(dmabuf->resv); + + module_put(dmabuf->owner); ++ kfree(dmabuf->name); + kfree(dmabuf); + return 0; + } diff --git a/queue-5.4/dmaengine-coh901318-fix-a-double-lock-bug-in-dma_tc_handle.patch b/queue-5.4/dmaengine-coh901318-fix-a-double-lock-bug-in-dma_tc_handle.patch new file mode 100644 index 00000000000..8ea407ca82c --- /dev/null +++ b/queue-5.4/dmaengine-coh901318-fix-a-double-lock-bug-in-dma_tc_handle.patch @@ -0,0 +1,41 @@ +From 36d5d22090d13fd3a7a8c9663a711cbe6970aac8 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Mon, 17 Feb 2020 17:40:50 +0300 +Subject: dmaengine: coh901318: Fix a double lock bug in dma_tc_handle() + +From: Dan Carpenter + +commit 36d5d22090d13fd3a7a8c9663a711cbe6970aac8 upstream. + +The caller is already holding the lock so this will deadlock. + +Fixes: 0b58828c923e ("DMAENGINE: COH 901 318 remove irq counting") +Signed-off-by: Dan Carpenter +Link: https://lore.kernel.org/r/20200217144050.3i4ymbytogod4ijn@kili.mountain +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/dma/coh901318.c | 4 ---- + 1 file changed, 4 deletions(-) + +--- a/drivers/dma/coh901318.c ++++ b/drivers/dma/coh901318.c +@@ -1947,8 +1947,6 @@ static void dma_tc_handle(struct coh9013 + return; + } + +- spin_lock(&cohc->lock); +- + /* + * When we reach this point, at least one queue item + * should have been moved over from cohc->queue to +@@ -1969,8 +1967,6 @@ static void dma_tc_handle(struct coh9013 + if (coh901318_queue_start(cohc) == NULL) + cohc->busy = 0; + +- spin_unlock(&cohc->lock); +- + /* + * This tasklet will remove items from cohc->active + * and thus terminates them. diff --git a/queue-5.4/edac-synopsys-do-not-print-an-error-with-back-to-back-snprintf-calls.patch b/queue-5.4/edac-synopsys-do-not-print-an-error-with-back-to-back-snprintf-calls.patch new file mode 100644 index 00000000000..32de30b219a --- /dev/null +++ b/queue-5.4/edac-synopsys-do-not-print-an-error-with-back-to-back-snprintf-calls.patch @@ -0,0 +1,73 @@ +From dfc6014e3b60713f375d0601d7549eed224c4615 Mon Sep 17 00:00:00 2001 +From: Sherry Sun +Date: Thu, 27 Feb 2020 16:34:12 +0800 +Subject: EDAC/synopsys: Do not print an error with back-to-back snprintf() calls + +From: Sherry Sun + +commit dfc6014e3b60713f375d0601d7549eed224c4615 upstream. + +handle_error() currently calls snprintf() a couple of times in +succession to output the message for a CE/UE, therefore overwriting each +part of the message which was formatted with the previous snprintf() +call. As a result, only the part of the message from the last snprintf() +call will be printed. + +The simplest and most effective way to fix this problem is to combine +the whole string into one which to supply to a single snprintf() call. + + [ bp: Massage. ] + +Fixes: b500b4a029d57 ("EDAC, synopsys: Add ECC support for ZynqMP DDR controller") +Signed-off-by: Sherry Sun +Signed-off-by: Borislav Petkov +Reviewed-by: James Morse +Cc: Manish Narani +Link: https://lkml.kernel.org/r/1582792452-32575-1-git-send-email-sherry.sun@nxp.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/edac/synopsys_edac.c | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +--- a/drivers/edac/synopsys_edac.c ++++ b/drivers/edac/synopsys_edac.c +@@ -479,20 +479,14 @@ static void handle_error(struct mem_ctl_ + pinf = &p->ceinfo; + if (!priv->p_data->quirks) { + snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "DDR ECC error type:%s Row %d Bank %d Col %d ", +- "CE", pinf->row, pinf->bank, pinf->col); +- snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "Bit Position: %d Data: 0x%08x\n", ++ "DDR ECC error type:%s Row %d Bank %d Col %d Bit Position: %d Data: 0x%08x", ++ "CE", pinf->row, pinf->bank, pinf->col, + pinf->bitpos, pinf->data); + } else { + snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "DDR ECC error type:%s Row %d Bank %d Col %d ", +- "CE", pinf->row, pinf->bank, pinf->col); +- snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "BankGroup Number %d Block Number %d ", +- pinf->bankgrpnr, pinf->blknr); +- snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "Bit Position: %d Data: 0x%08x\n", ++ "DDR ECC error type:%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d Bit Position: %d Data: 0x%08x", ++ "CE", pinf->row, pinf->bank, pinf->col, ++ pinf->bankgrpnr, pinf->blknr, + pinf->bitpos, pinf->data); + } + +@@ -509,10 +503,8 @@ static void handle_error(struct mem_ctl_ + "UE", pinf->row, pinf->bank, pinf->col); + } else { + snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "DDR ECC error type :%s Row %d Bank %d Col %d ", +- "UE", pinf->row, pinf->bank, pinf->col); +- snprintf(priv->message, SYNPS_EDAC_MSG_SIZE, +- "BankGroup Number %d Block Number %d", ++ "DDR ECC error type :%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d", ++ "UE", pinf->row, pinf->bank, pinf->col, + pinf->bankgrpnr, pinf->blknr); + } + diff --git a/queue-5.4/efi-read_once-rng-seed-size-before-munmap.patch b/queue-5.4/efi-read_once-rng-seed-size-before-munmap.patch new file mode 100644 index 00000000000..5a6c311603f --- /dev/null +++ b/queue-5.4/efi-read_once-rng-seed-size-before-munmap.patch @@ -0,0 +1,50 @@ +From be36f9e7517e17810ec369626a128d7948942259 Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" +Date: Fri, 21 Feb 2020 09:48:49 +0100 +Subject: efi: READ_ONCE rng seed size before munmap + +From: Jason A. Donenfeld + +commit be36f9e7517e17810ec369626a128d7948942259 upstream. + +This function is consistent with using size instead of seed->size +(except for one place that this patch fixes), but it reads seed->size +without using READ_ONCE, which means the compiler might still do +something unwanted. So, this commit simply adds the READ_ONCE +wrapper. + +Fixes: 636259880a7e ("efi: Add support for seeding the RNG from a UEFI ...") +Signed-off-by: Jason A. Donenfeld +Signed-off-by: Ard Biesheuvel +Signed-off-by: Ingo Molnar +Cc: linux-efi@vger.kernel.org +Cc: Ingo Molnar +Cc: Thomas Gleixner +Link: https://lore.kernel.org/r/20200217123354.21140-1-Jason@zx2c4.com +Link: https://lore.kernel.org/r/20200221084849.26878-5-ardb@kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/firmware/efi/efi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/firmware/efi/efi.c ++++ b/drivers/firmware/efi/efi.c +@@ -544,7 +544,7 @@ int __init efi_config_parse_tables(void + + seed = early_memremap(efi.rng_seed, sizeof(*seed)); + if (seed != NULL) { +- size = seed->size; ++ size = READ_ONCE(seed->size); + early_memunmap(seed, sizeof(*seed)); + } else { + pr_err("Could not map UEFI random seed!\n"); +@@ -554,7 +554,7 @@ int __init efi_config_parse_tables(void + sizeof(*seed) + size); + if (seed != NULL) { + pr_notice("seeding entropy pool\n"); +- add_bootloader_randomness(seed->bits, seed->size); ++ add_bootloader_randomness(seed->bits, size); + early_memunmap(seed, sizeof(*seed) + size); + } else { + pr_err("Could not map UEFI random seed!\n"); diff --git a/queue-5.4/efi-x86-align-guids-to-their-size-in-the-mixed-mode-runtime-wrapper.patch b/queue-5.4/efi-x86-align-guids-to-their-size-in-the-mixed-mode-runtime-wrapper.patch new file mode 100644 index 00000000000..4cd87d1314d --- /dev/null +++ b/queue-5.4/efi-x86-align-guids-to-their-size-in-the-mixed-mode-runtime-wrapper.patch @@ -0,0 +1,129 @@ +From 63056e8b5ebf41d52170e9f5ba1fc83d1855278c Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Fri, 21 Feb 2020 09:48:46 +0100 +Subject: efi/x86: Align GUIDs to their size in the mixed mode runtime wrapper + +From: Ard Biesheuvel + +commit 63056e8b5ebf41d52170e9f5ba1fc83d1855278c upstream. + +Hans reports that his mixed mode systems running v5.6-rc1 kernels hit +the WARN_ON() in virt_to_phys_or_null_size(), caused by the fact that +efi_guid_t objects on the vmap'ed stack happen to be misaligned with +respect to their sizes. As a quick (i.e., backportable) fix, copy GUID +pointer arguments to the local stack into a buffer that is naturally +aligned to its size, so that it is guaranteed to cover only one +physical page. + +Note that on x86, we cannot rely on the stack pointer being aligned +the way the compiler expects, so we need to allocate an 8-byte aligned +buffer of sufficient size, and copy the GUID into that buffer at an +offset that is aligned to 16 bytes. + +Fixes: f6697df36bdf0bf7 ("x86/efi: Prevent mixed mode boot corruption with CONFIG_VMAP_STACK=y") +Reported-by: Hans de Goede +Signed-off-by: Ard Biesheuvel +Signed-off-by: Ingo Molnar +Tested-by: Hans de Goede +Cc: linux-efi@vger.kernel.org +Cc: Ingo Molnar +Cc: Thomas Gleixner +Link: https://lore.kernel.org/r/20200221084849.26878-2-ardb@kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/platform/efi/efi_64.c | 25 +++++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +--- a/arch/x86/platform/efi/efi_64.c ++++ b/arch/x86/platform/efi/efi_64.c +@@ -791,6 +791,8 @@ static efi_status_t + efi_thunk_get_variable(efi_char16_t *name, efi_guid_t *vendor, + u32 *attr, unsigned long *data_size, void *data) + { ++ u8 buf[24] __aligned(8); ++ efi_guid_t *vnd = PTR_ALIGN((efi_guid_t *)buf, sizeof(*vnd)); + efi_status_t status; + u32 phys_name, phys_vendor, phys_attr; + u32 phys_data_size, phys_data; +@@ -798,8 +800,10 @@ efi_thunk_get_variable(efi_char16_t *nam + + spin_lock_irqsave(&efi_runtime_lock, flags); + ++ *vnd = *vendor; ++ + phys_data_size = virt_to_phys_or_null(data_size); +- phys_vendor = virt_to_phys_or_null(vendor); ++ phys_vendor = virt_to_phys_or_null(vnd); + phys_name = virt_to_phys_or_null_size(name, efi_name_size(name)); + phys_attr = virt_to_phys_or_null(attr); + phys_data = virt_to_phys_or_null_size(data, *data_size); +@@ -816,14 +820,18 @@ static efi_status_t + efi_thunk_set_variable(efi_char16_t *name, efi_guid_t *vendor, + u32 attr, unsigned long data_size, void *data) + { ++ u8 buf[24] __aligned(8); ++ efi_guid_t *vnd = PTR_ALIGN((efi_guid_t *)buf, sizeof(*vnd)); + u32 phys_name, phys_vendor, phys_data; + efi_status_t status; + unsigned long flags; + + spin_lock_irqsave(&efi_runtime_lock, flags); + ++ *vnd = *vendor; ++ + phys_name = virt_to_phys_or_null_size(name, efi_name_size(name)); +- phys_vendor = virt_to_phys_or_null(vendor); ++ phys_vendor = virt_to_phys_or_null(vnd); + phys_data = virt_to_phys_or_null_size(data, data_size); + + /* If data_size is > sizeof(u32) we've got problems */ +@@ -840,6 +848,8 @@ efi_thunk_set_variable_nonblocking(efi_c + u32 attr, unsigned long data_size, + void *data) + { ++ u8 buf[24] __aligned(8); ++ efi_guid_t *vnd = PTR_ALIGN((efi_guid_t *)buf, sizeof(*vnd)); + u32 phys_name, phys_vendor, phys_data; + efi_status_t status; + unsigned long flags; +@@ -847,8 +857,10 @@ efi_thunk_set_variable_nonblocking(efi_c + if (!spin_trylock_irqsave(&efi_runtime_lock, flags)) + return EFI_NOT_READY; + ++ *vnd = *vendor; ++ + phys_name = virt_to_phys_or_null_size(name, efi_name_size(name)); +- phys_vendor = virt_to_phys_or_null(vendor); ++ phys_vendor = virt_to_phys_or_null(vnd); + phys_data = virt_to_phys_or_null_size(data, data_size); + + /* If data_size is > sizeof(u32) we've got problems */ +@@ -865,14 +877,18 @@ efi_thunk_get_next_variable(unsigned lon + efi_char16_t *name, + efi_guid_t *vendor) + { ++ u8 buf[24] __aligned(8); ++ efi_guid_t *vnd = PTR_ALIGN((efi_guid_t *)buf, sizeof(*vnd)); + efi_status_t status; + u32 phys_name_size, phys_name, phys_vendor; + unsigned long flags; + + spin_lock_irqsave(&efi_runtime_lock, flags); + ++ *vnd = *vendor; ++ + phys_name_size = virt_to_phys_or_null(name_size); +- phys_vendor = virt_to_phys_or_null(vendor); ++ phys_vendor = virt_to_phys_or_null(vnd); + phys_name = virt_to_phys_or_null_size(name, *name_size); + + status = efi_thunk(get_next_variable, phys_name_size, +@@ -880,6 +896,7 @@ efi_thunk_get_next_variable(unsigned lon + + spin_unlock_irqrestore(&efi_runtime_lock, flags); + ++ *vendor = *vnd; + return status; + } + diff --git a/queue-5.4/efi-x86-handle-by-ref-arguments-covering-multiple-pages-in-mixed-mode.patch b/queue-5.4/efi-x86-handle-by-ref-arguments-covering-multiple-pages-in-mixed-mode.patch new file mode 100644 index 00000000000..99bca72fb31 --- /dev/null +++ b/queue-5.4/efi-x86-handle-by-ref-arguments-covering-multiple-pages-in-mixed-mode.patch @@ -0,0 +1,137 @@ +From 8319e9d5ad98ffccd19f35664382c73cea216193 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Fri, 21 Feb 2020 09:48:48 +0100 +Subject: efi/x86: Handle by-ref arguments covering multiple pages in mixed mode + +From: Ard Biesheuvel + +commit 8319e9d5ad98ffccd19f35664382c73cea216193 upstream. + +The mixed mode runtime wrappers are fragile when it comes to how the +memory referred to by its pointer arguments are laid out in memory, due +to the fact that it translates these addresses to physical addresses that +the runtime services can dereference when running in 1:1 mode. Since +vmalloc'ed pages (including the vmap'ed stack) are not contiguous in the +physical address space, this scheme only works if the referenced memory +objects do not cross page boundaries. + +Currently, the mixed mode runtime service wrappers require that all by-ref +arguments that live in the vmalloc space have a size that is a power of 2, +and are aligned to that same value. While this is a sensible way to +construct an object that is guaranteed not to cross a page boundary, it is +overly strict when it comes to checking whether a given object violates +this requirement, as we can simply take the physical address of the first +and the last byte, and verify that they point into the same physical page. + +When this check fails, we emit a WARN(), but then simply proceed with the +call, which could cause data corruption if the next physical page belongs +to a mapping that is entirely unrelated. + +Given that with vmap'ed stacks, this condition is much more likely to +trigger, let's relax the condition a bit, but fail the runtime service +call if it does trigger. + +Fixes: f6697df36bdf0bf7 ("x86/efi: Prevent mixed mode boot corruption with CONFIG_VMAP_STACK=y") +Signed-off-by: Ard Biesheuvel +Signed-off-by: Ingo Molnar +Cc: linux-efi@vger.kernel.org +Cc: Ingo Molnar +Cc: Thomas Gleixner +Link: https://lore.kernel.org/r/20200221084849.26878-4-ardb@kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/platform/efi/efi_64.c | 45 +++++++++++++++++++++++------------------ + 1 file changed, 26 insertions(+), 19 deletions(-) + +--- a/arch/x86/platform/efi/efi_64.c ++++ b/arch/x86/platform/efi/efi_64.c +@@ -316,7 +316,7 @@ void efi_sync_low_kernel_mappings(void) + static inline phys_addr_t + virt_to_phys_or_null_size(void *va, unsigned long size) + { +- bool bad_size; ++ phys_addr_t pa; + + if (!va) + return 0; +@@ -324,16 +324,13 @@ virt_to_phys_or_null_size(void *va, unsi + if (virt_addr_valid(va)) + return virt_to_phys(va); + +- /* +- * A fully aligned variable on the stack is guaranteed not to +- * cross a page bounary. Try to catch strings on the stack by +- * checking that 'size' is a power of two. +- */ +- bad_size = size > PAGE_SIZE || !is_power_of_2(size); ++ pa = slow_virt_to_phys(va); + +- WARN_ON(!IS_ALIGNED((unsigned long)va, size) || bad_size); ++ /* check if the object crosses a page boundary */ ++ if (WARN_ON((pa ^ (pa + size - 1)) & PAGE_MASK)) ++ return 0; + +- return slow_virt_to_phys(va); ++ return pa; + } + + #define virt_to_phys_or_null(addr) \ +@@ -808,8 +805,11 @@ efi_thunk_get_variable(efi_char16_t *nam + phys_attr = virt_to_phys_or_null(attr); + phys_data = virt_to_phys_or_null_size(data, *data_size); + +- status = efi_thunk(get_variable, phys_name, phys_vendor, +- phys_attr, phys_data_size, phys_data); ++ if (!phys_name || (data && !phys_data)) ++ status = EFI_INVALID_PARAMETER; ++ else ++ status = efi_thunk(get_variable, phys_name, phys_vendor, ++ phys_attr, phys_data_size, phys_data); + + spin_unlock_irqrestore(&efi_runtime_lock, flags); + +@@ -834,9 +834,11 @@ efi_thunk_set_variable(efi_char16_t *nam + phys_vendor = virt_to_phys_or_null(vnd); + phys_data = virt_to_phys_or_null_size(data, data_size); + +- /* If data_size is > sizeof(u32) we've got problems */ +- status = efi_thunk(set_variable, phys_name, phys_vendor, +- attr, data_size, phys_data); ++ if (!phys_name || !phys_data) ++ status = EFI_INVALID_PARAMETER; ++ else ++ status = efi_thunk(set_variable, phys_name, phys_vendor, ++ attr, data_size, phys_data); + + spin_unlock_irqrestore(&efi_runtime_lock, flags); + +@@ -863,9 +865,11 @@ efi_thunk_set_variable_nonblocking(efi_c + phys_vendor = virt_to_phys_or_null(vnd); + phys_data = virt_to_phys_or_null_size(data, data_size); + +- /* If data_size is > sizeof(u32) we've got problems */ +- status = efi_thunk(set_variable, phys_name, phys_vendor, +- attr, data_size, phys_data); ++ if (!phys_name || !phys_data) ++ status = EFI_INVALID_PARAMETER; ++ else ++ status = efi_thunk(set_variable, phys_name, phys_vendor, ++ attr, data_size, phys_data); + + spin_unlock_irqrestore(&efi_runtime_lock, flags); + +@@ -891,8 +895,11 @@ efi_thunk_get_next_variable(unsigned lon + phys_vendor = virt_to_phys_or_null(vnd); + phys_name = virt_to_phys_or_null_size(name, *name_size); + +- status = efi_thunk(get_next_variable, phys_name_size, +- phys_name, phys_vendor); ++ if (!phys_name) ++ status = EFI_INVALID_PARAMETER; ++ else ++ status = efi_thunk(get_next_variable, phys_name_size, ++ phys_name, phys_vendor); + + spin_unlock_irqrestore(&efi_runtime_lock, flags); + diff --git a/queue-5.4/hwmon-adt7462-fix-an-error-return-in-adt7462_reg_volt.patch b/queue-5.4/hwmon-adt7462-fix-an-error-return-in-adt7462_reg_volt.patch new file mode 100644 index 00000000000..262c0812657 --- /dev/null +++ b/queue-5.4/hwmon-adt7462-fix-an-error-return-in-adt7462_reg_volt.patch @@ -0,0 +1,36 @@ +From 44f2f882909fedfc3a56e4b90026910456019743 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Tue, 3 Mar 2020 13:16:08 +0300 +Subject: hwmon: (adt7462) Fix an error return in ADT7462_REG_VOLT() + +From: Dan Carpenter + +commit 44f2f882909fedfc3a56e4b90026910456019743 upstream. + +This is only called from adt7462_update_device(). The caller expects it +to return zero on error. I fixed a similar issue earlier in commit +a4bf06d58f21 ("hwmon: (adt7462) ADT7462_REG_VOLT_MAX() should return 0") +but I missed this one. + +Fixes: c0b4e3ab0c76 ("adt7462: new hwmon driver") +Signed-off-by: Dan Carpenter +Reviewed-by: Darrick J. Wong +Link: https://lore.kernel.org/r/20200303101608.kqjwfcazu2ylhi2a@kili.mountain +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/adt7462.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/hwmon/adt7462.c ++++ b/drivers/hwmon/adt7462.c +@@ -413,7 +413,7 @@ static int ADT7462_REG_VOLT(struct adt74 + return 0x95; + break; + } +- return -ENODEV; ++ return 0; + } + + /* Provide labels for sysfs */ diff --git a/queue-5.4/powerpc-fix-hardware-pmu-exception-bug-on-powervm-compatibility-mode-systems.patch b/queue-5.4/powerpc-fix-hardware-pmu-exception-bug-on-powervm-compatibility-mode-systems.patch new file mode 100644 index 00000000000..c1f15c99197 --- /dev/null +++ b/queue-5.4/powerpc-fix-hardware-pmu-exception-bug-on-powervm-compatibility-mode-systems.patch @@ -0,0 +1,45 @@ +From fc37a1632d40c80c067eb1bc235139f5867a2667 Mon Sep 17 00:00:00 2001 +From: "Desnes A. Nunes do Rosario" +Date: Thu, 27 Feb 2020 10:47:15 -0300 +Subject: powerpc: fix hardware PMU exception bug on PowerVM compatibility mode systems + +From: Desnes A. Nunes do Rosario + +commit fc37a1632d40c80c067eb1bc235139f5867a2667 upstream. + +PowerVM systems running compatibility mode on a few Power8 revisions are +still vulnerable to the hardware defect that loses PMU exceptions arriving +prior to a context switch. + +The software fix for this issue is enabled through the CPU_FTR_PMAO_BUG +cpu_feature bit, nevertheless this bit also needs to be set for PowerVM +compatibility mode systems. + +Fixes: 68f2f0d431d9ea4 ("powerpc: Add a cpu feature CPU_FTR_PMAO_BUG") +Signed-off-by: Desnes A. Nunes do Rosario +Reviewed-by: Leonardo Bras +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20200227134715.9715-1-desnesn@linux.ibm.com +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/cputable.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/cputable.c ++++ b/arch/powerpc/kernel/cputable.c +@@ -2193,11 +2193,13 @@ static struct cpu_spec * __init setup_cp + * oprofile_cpu_type already has a value, then we are + * possibly overriding a real PVR with a logical one, + * and, in that case, keep the current value for +- * oprofile_cpu_type. ++ * oprofile_cpu_type. Futhermore, let's ensure that the ++ * fix for the PMAO bug is enabled on compatibility mode. + */ + if (old.oprofile_cpu_type != NULL) { + t->oprofile_cpu_type = old.oprofile_cpu_type; + t->oprofile_type = old.oprofile_type; ++ t->cpu_features |= old.cpu_features & CPU_FTR_PMAO_BUG; + } + } + diff --git a/queue-5.4/series b/queue-5.4/series index 605571bda56..7a2b83f6b32 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -151,3 +151,18 @@ rdma-core-fix-protection-fault-in-ib_mr_pool_destroy.patch regulator-stm32-vrefbuf-fix-a-possible-overshoot-when-re-enabling.patch rmda-cm-fix-missing-ib_cm_destroy_id-in-ib_cm_insert_listen.patch ib-hfi1-qib-ensure-rcu-is-locked-when-accessing-list.patch +arm-imx-build-v7_cpu_resume-unconditionally.patch +arm-dts-am437x-idk-evm-fix-incorrect-opp-node-names.patch +arm-dts-dra7xx-clocks-fixup-ipu1-mux-clock-parent-source.patch +arm-dts-imx6dl-colibri-eval-v3-fix-sram-compatible-properties.patch +arm-dts-imx7-colibri-fix-frequency-for-sd-mmc.patch +hwmon-adt7462-fix-an-error-return-in-adt7462_reg_volt.patch +dma-buf-free-dmabuf-name-in-dma_buf_release.patch +dmaengine-coh901318-fix-a-double-lock-bug-in-dma_tc_handle.patch +arm64-dts-meson-fix-gxm-khadas-vim2-wifi.patch +bus-ti-sysc-fix-1-wire-reset-quirk.patch +edac-synopsys-do-not-print-an-error-with-back-to-back-snprintf-calls.patch +powerpc-fix-hardware-pmu-exception-bug-on-powervm-compatibility-mode-systems.patch +efi-x86-align-guids-to-their-size-in-the-mixed-mode-runtime-wrapper.patch +efi-x86-handle-by-ref-arguments-covering-multiple-pages-in-mixed-mode.patch +efi-read_once-rng-seed-size-before-munmap.patch