From 1f14b50267d6daf49e516b86f5608a2ad1d6e24a Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Fri, 5 Feb 2021 07:39:47 -0500 Subject: [PATCH] Fixes for 5.4 Signed-off-by: Sasha Levin --- .../alsa-hda-add-cometlake-r-pci-id.patch | 37 ++++++ ...da-resume-codec-to-do-jack-detection.patch | 41 +++++++ ...change-function-decide_dp_link_setti.patch | 45 +++++++ ...update-dram_clock_change_latency-for.patch | 45 +++++++ .../kthread-extract-kthread_is_per_cpu.patch | 111 ++++++++++++++++++ ...ac80211-fix-fast-rx-encryption-check.patch | 36 ++++++ ...rinfo-bit-before-deciding-the-host-b.patch | 53 +++++++++ ...l-don-t-fail-on-missing-symbol-table.patch | 51 ++++++++ ...x-warning-for-missing-regulator_disa.patch | 82 +++++++++++++ ...el-vbtn-support-for-tablet-mode-on-d.patch | 41 +++++++ ...chscreen_dmi-add-swap-x-y-quirk-for-.patch | 85 ++++++++++++++ ...fix-memleak-in-vnic_dev_init_devcmd2.patch | 58 +++++++++ ...default-timeout-to-avoid-crash-durin.patch | 85 ++++++++++++++ ...-invoking-response-handler-twice-if-.patch | 95 +++++++++++++++ ...ort_srp-don-t-block-target-in-failfa.patch | 45 +++++++ ...rpc-only-test-lwm-stmw-on-big-endian.patch | 61 ++++++++++ queue-5.4/series | 19 +++ ...lem-that-the-disc-content-is-not-dis.patch | 74 ++++++++++++ ...-restrict-affinity-change-to-rescuer.patch | 58 +++++++++ .../x86-__always_inline-__-rd-wr-msr.patch | 48 ++++++++ 20 files changed, 1170 insertions(+) create mode 100644 queue-5.4/alsa-hda-add-cometlake-r-pci-id.patch create mode 100644 queue-5.4/asoc-sof-intel-hda-resume-codec-to-do-jack-detection.patch create mode 100644 queue-5.4/drm-amd-display-change-function-decide_dp_link_setti.patch create mode 100644 queue-5.4/drm-amd-display-update-dram_clock_change_latency-for.patch create mode 100644 queue-5.4/kthread-extract-kthread_is_per_cpu.patch create mode 100644 queue-5.4/mac80211-fix-fast-rx-encryption-check.patch create mode 100644 queue-5.4/nvme-check-the-prinfo-bit-before-deciding-the-host-b.patch create mode 100644 queue-5.4/objtool-don-t-fail-on-missing-symbol-table.patch create mode 100644 queue-5.4/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch create mode 100644 queue-5.4/platform-x86-intel-vbtn-support-for-tablet-mode-on-d.patch create mode 100644 queue-5.4/platform-x86-touchscreen_dmi-add-swap-x-y-quirk-for-.patch create mode 100644 queue-5.4/scsi-fnic-fix-memleak-in-vnic_dev_init_devcmd2.patch create mode 100644 queue-5.4/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch create mode 100644 queue-5.4/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch create mode 100644 queue-5.4/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch create mode 100644 queue-5.4/selftests-powerpc-only-test-lwm-stmw-on-big-endian.patch create mode 100644 queue-5.4/udf-fix-the-problem-that-the-disc-content-is-not-dis.patch create mode 100644 queue-5.4/workqueue-restrict-affinity-change-to-rescuer.patch create mode 100644 queue-5.4/x86-__always_inline-__-rd-wr-msr.patch diff --git a/queue-5.4/alsa-hda-add-cometlake-r-pci-id.patch b/queue-5.4/alsa-hda-add-cometlake-r-pci-id.patch new file mode 100644 index 00000000000..03f8e08185b --- /dev/null +++ b/queue-5.4/alsa-hda-add-cometlake-r-pci-id.patch @@ -0,0 +1,37 @@ +From c5b688ac50e959f65c0f565970a2b36bfcc538e9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 15 Jan 2021 11:15:15 +0800 +Subject: ALSA: hda: Add Cometlake-R PCI ID + +From: Kai-Chuan Hsieh + +[ Upstream commit f84d3a1ec375e46a55cc3ba85c04272b24bd3921 ] + +Add HD Audio Device PCI ID for the Intel Cometlake-R platform + +Reviewed-by: Kai Vehmanen +Signed-off-by: Kai-Chuan Hsieh +Link: https://lore.kernel.org/r/20210115031515.13100-1-kaichuan.hsieh@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/hda_intel.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c +index 5f515a29668c8..b3667a5efdc1f 100644 +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -2450,6 +2450,9 @@ static const struct pci_device_id azx_ids[] = { + /* CometLake-S */ + { PCI_DEVICE(0x8086, 0xa3f0), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, ++ /* CometLake-R */ ++ { PCI_DEVICE(0x8086, 0xf0c8), ++ .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* Icelake */ + { PCI_DEVICE(0x8086, 0x34c8), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, +-- +2.27.0 + diff --git a/queue-5.4/asoc-sof-intel-hda-resume-codec-to-do-jack-detection.patch b/queue-5.4/asoc-sof-intel-hda-resume-codec-to-do-jack-detection.patch new file mode 100644 index 00000000000..ce27b08791e --- /dev/null +++ b/queue-5.4/asoc-sof-intel-hda-resume-codec-to-do-jack-detection.patch @@ -0,0 +1,41 @@ +From adf0cc125ece47904ea50efca27631d3de7a2e68 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 13 Jan 2021 02:11:23 +0800 +Subject: ASoC: SOF: Intel: hda: Resume codec to do jack detection + +From: Kai-Heng Feng + +[ Upstream commit bcd7059abc19e6ec5b2260dff6a008fb99c4eef9 ] + +Instead of queueing jackpoll_work, runtime resume the codec to let it +use different jack detection methods based on jackpoll_interval. + +This partially matches SOF driver's behavior with commit a6e7d0a4bdb0 +("ALSA: hda: fix jack detection with Realtek codecs when in D3"), the +difference is SOF unconditionally resumes the codec. + +Signed-off-by: Kai-Heng Feng +Link: https://lore.kernel.org/r/20210112181128.1229827-1-kai.heng.feng@canonical.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/sof/intel/hda-codec.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/sound/soc/sof/intel/hda-codec.c b/sound/soc/sof/intel/hda-codec.c +index 9e8233c10d860..df38616c431a6 100644 +--- a/sound/soc/sof/intel/hda-codec.c ++++ b/sound/soc/sof/intel/hda-codec.c +@@ -68,8 +68,7 @@ void hda_codec_jack_check(struct snd_sof_dev *sdev) + * has been recorded in STATESTS + */ + if (codec->jacktbl.used) +- schedule_delayed_work(&codec->jackpoll_work, +- codec->jackpoll_interval); ++ pm_request_resume(&codec->core.dev); + } + #else + void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev) {} +-- +2.27.0 + diff --git a/queue-5.4/drm-amd-display-change-function-decide_dp_link_setti.patch b/queue-5.4/drm-amd-display-change-function-decide_dp_link_setti.patch new file mode 100644 index 00000000000..4472496b668 --- /dev/null +++ b/queue-5.4/drm-amd-display-change-function-decide_dp_link_setti.patch @@ -0,0 +1,45 @@ +From 661a30ffb6246f2731ac6108cc190c698c1c43ac Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 4 Jan 2021 14:09:41 -0500 +Subject: drm/amd/display: Change function decide_dp_link_settings to avoid + infinite looping + +From: Bing Guo + +[ Upstream commit 4716a7c50c5c66d6ddc42401e1e0ba13b492e105 ] + +Why: +Function decide_dp_link_settings() loops infinitely when required bandwidth +can't be supported. + +How: +Check the required bandwidth against verified_link_cap before trying to +find a link setting for it. + +Tested-by: Daniel Wheeler +Signed-off-by: Bing Guo +Reviewed-by: Jun Lei +Acked-by: Anson Jacob +Signed-off-by: Alex Deucher +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +index 959eb075d11ed..c18f39271b034 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +@@ -1914,6 +1914,9 @@ static bool decide_dp_link_settings(struct dc_link *link, struct dc_link_setting + initial_link_setting; + uint32_t link_bw; + ++ if (req_bw > dc_link_bandwidth_kbps(link, &link->verified_link_cap)) ++ return false; ++ + /* search for the minimum link setting that: + * 1. is supported according to the link training result + * 2. could support the b/w requested by the timing +-- +2.27.0 + diff --git a/queue-5.4/drm-amd-display-update-dram_clock_change_latency-for.patch b/queue-5.4/drm-amd-display-update-dram_clock_change_latency-for.patch new file mode 100644 index 00000000000..0e2b1c65ca8 --- /dev/null +++ b/queue-5.4/drm-amd-display-update-dram_clock_change_latency-for.patch @@ -0,0 +1,45 @@ +From 99a176fa7f852d94d713c47410933faf7b3331ca Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 8 Jan 2021 12:27:51 -0500 +Subject: drm/amd/display: Update dram_clock_change_latency for DCN2.1 + +From: Jake Wang + +[ Upstream commit 901c1ec05ef277ce9d43cb806a225b28b3efe89a ] + +[WHY] +dram clock change latencies get updated using ddr4 latency table, but +does that update does not happen before validation. This value +should not be the default and should be number received from +df for better mode support. +This may cause a PState hang on high refresh panels with short vblanks +such as on 1080p 360hz or 300hz panels. + +[HOW] +Update latency from 23.84 to 11.72. + +Signed-off-by: Sung Lee +Reviewed-by: Tony Cheng +Acked-by: Aurabindo Pillai +Signed-off-by: Alex Deucher +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +index bb7add5ea2273..a6d5beada6634 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +@@ -257,7 +257,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn2_1_soc = { + .num_banks = 8, + .num_chans = 4, + .vmm_page_size_bytes = 4096, +- .dram_clock_change_latency_us = 23.84, ++ .dram_clock_change_latency_us = 11.72, + .return_bus_width_bytes = 64, + .dispclk_dppclk_vco_speed_mhz = 3600, + .xfc_bus_transport_time_us = 4, +-- +2.27.0 + diff --git a/queue-5.4/kthread-extract-kthread_is_per_cpu.patch b/queue-5.4/kthread-extract-kthread_is_per_cpu.patch new file mode 100644 index 00000000000..937547c2fe9 --- /dev/null +++ b/queue-5.4/kthread-extract-kthread_is_per_cpu.patch @@ -0,0 +1,111 @@ +From f8ca124cfe0a28e7111029d8647ffff47e1b102a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 12 Jan 2021 11:24:04 +0100 +Subject: kthread: Extract KTHREAD_IS_PER_CPU + +From: Peter Zijlstra + +[ Upstream commit ac687e6e8c26181a33270efd1a2e2241377924b0 ] + +There is a need to distinguish geniune per-cpu kthreads from kthreads +that happen to have a single CPU affinity. + +Geniune per-cpu kthreads are kthreads that are CPU affine for +correctness, these will obviously have PF_KTHREAD set, but must also +have PF_NO_SETAFFINITY set, lest userspace modify their affinity and +ruins things. + +However, these two things are not sufficient, PF_NO_SETAFFINITY is +also set on other tasks that have their affinities controlled through +other means, like for instance workqueues. + +Therefore another bit is needed; it turns out kthread_create_per_cpu() +already has such a bit: KTHREAD_IS_PER_CPU, which is used to make +kthread_park()/kthread_unpark() work correctly. + +Expose this flag and remove the implicit setting of it from +kthread_create_on_cpu(); the io_uring usage of it seems dubious at +best. + +Signed-off-by: Peter Zijlstra (Intel) +Reviewed-by: Valentin Schneider +Tested-by: Valentin Schneider +Link: https://lkml.kernel.org/r/20210121103506.557620262@infradead.org +Signed-off-by: Sasha Levin +--- + include/linux/kthread.h | 3 +++ + kernel/kthread.c | 27 ++++++++++++++++++++++++++- + kernel/smpboot.c | 1 + + 3 files changed, 30 insertions(+), 1 deletion(-) + +diff --git a/include/linux/kthread.h b/include/linux/kthread.h +index 0f9da966934e2..c7108ce5a051c 100644 +--- a/include/linux/kthread.h ++++ b/include/linux/kthread.h +@@ -31,6 +31,9 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), + unsigned int cpu, + const char *namefmt); + ++void kthread_set_per_cpu(struct task_struct *k, int cpu); ++bool kthread_is_per_cpu(struct task_struct *k); ++ + /** + * kthread_run - create and wake a thread. + * @threadfn: the function to run until signal_pending(current). +diff --git a/kernel/kthread.c b/kernel/kthread.c +index e51f0006057df..1d4c98a19043f 100644 +--- a/kernel/kthread.c ++++ b/kernel/kthread.c +@@ -469,11 +469,36 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), + return p; + kthread_bind(p, cpu); + /* CPU hotplug need to bind once again when unparking the thread. */ +- set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags); + to_kthread(p)->cpu = cpu; + return p; + } + ++void kthread_set_per_cpu(struct task_struct *k, int cpu) ++{ ++ struct kthread *kthread = to_kthread(k); ++ if (!kthread) ++ return; ++ ++ WARN_ON_ONCE(!(k->flags & PF_NO_SETAFFINITY)); ++ ++ if (cpu < 0) { ++ clear_bit(KTHREAD_IS_PER_CPU, &kthread->flags); ++ return; ++ } ++ ++ kthread->cpu = cpu; ++ set_bit(KTHREAD_IS_PER_CPU, &kthread->flags); ++} ++ ++bool kthread_is_per_cpu(struct task_struct *k) ++{ ++ struct kthread *kthread = to_kthread(k); ++ if (!kthread) ++ return false; ++ ++ return test_bit(KTHREAD_IS_PER_CPU, &kthread->flags); ++} ++ + /** + * kthread_unpark - unpark a thread created by kthread_create(). + * @k: thread created by kthread_create(). +diff --git a/kernel/smpboot.c b/kernel/smpboot.c +index 2efe1e206167c..f25208e8df836 100644 +--- a/kernel/smpboot.c ++++ b/kernel/smpboot.c +@@ -188,6 +188,7 @@ __smpboot_create_thread(struct smp_hotplug_thread *ht, unsigned int cpu) + kfree(td); + return PTR_ERR(tsk); + } ++ kthread_set_per_cpu(tsk, cpu); + /* + * Park the thread so that it could start right on the CPU + * when it is available. +-- +2.27.0 + diff --git a/queue-5.4/mac80211-fix-fast-rx-encryption-check.patch b/queue-5.4/mac80211-fix-fast-rx-encryption-check.patch new file mode 100644 index 00000000000..d7be8306344 --- /dev/null +++ b/queue-5.4/mac80211-fix-fast-rx-encryption-check.patch @@ -0,0 +1,36 @@ +From efa8c82a561498b7f05d605536099f5d83bf497a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 18 Dec 2020 19:47:17 +0100 +Subject: mac80211: fix fast-rx encryption check + +From: Felix Fietkau + +[ Upstream commit 622d3b4e39381262da7b18ca1ed1311df227de86 ] + +When using WEP, the default unicast key needs to be selected, instead of +the STA PTK. + +Signed-off-by: Felix Fietkau +Link: https://lore.kernel.org/r/20201218184718.93650-5-nbd@nbd.name +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + net/mac80211/rx.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c +index 3ab85e1e38d82..1a15e7bae106a 100644 +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -4080,6 +4080,8 @@ void ieee80211_check_fast_rx(struct sta_info *sta) + + rcu_read_lock(); + key = rcu_dereference(sta->ptk[sta->ptk_idx]); ++ if (!key) ++ key = rcu_dereference(sdata->default_unicast_key); + if (key) { + switch (key->conf.cipher) { + case WLAN_CIPHER_SUITE_TKIP: +-- +2.27.0 + diff --git a/queue-5.4/nvme-check-the-prinfo-bit-before-deciding-the-host-b.patch b/queue-5.4/nvme-check-the-prinfo-bit-before-deciding-the-host-b.patch new file mode 100644 index 00000000000..5e4390c83da --- /dev/null +++ b/queue-5.4/nvme-check-the-prinfo-bit-before-deciding-the-host-b.patch @@ -0,0 +1,53 @@ +From cfc5b8f69e915e540f467196703a54fde6377ac3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 14 Jan 2021 18:55:07 -0700 +Subject: nvme: check the PRINFO bit before deciding the host buffer length + +From: Revanth Rajashekar + +[ Upstream commit 4d6b1c95b974761c01cbad92321b82232b66d2a2 ] + +According to NVMe spec v1.4, section 8.3.1, the PRINFO bit and +the metadata size play a vital role in deteriming the host buffer size. + +If PRIFNO bit is set and MS==8, the host doesn't add the metadata buffer, +instead the controller adds it. + +Signed-off-by: Revanth Rajashekar +Signed-off-by: Christoph Hellwig +Signed-off-by: Sasha Levin +--- + drivers/nvme/host/core.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c +index 7a964271959d8..c2cabd77884bf 100644 +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -1295,8 +1295,21 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) + } + + length = (io.nblocks + 1) << ns->lba_shift; +- meta_len = (io.nblocks + 1) * ns->ms; +- metadata = nvme_to_user_ptr(io.metadata); ++ ++ if ((io.control & NVME_RW_PRINFO_PRACT) && ++ ns->ms == sizeof(struct t10_pi_tuple)) { ++ /* ++ * Protection information is stripped/inserted by the ++ * controller. ++ */ ++ if (nvme_to_user_ptr(io.metadata)) ++ return -EINVAL; ++ meta_len = 0; ++ metadata = NULL; ++ } else { ++ meta_len = (io.nblocks + 1) * ns->ms; ++ metadata = nvme_to_user_ptr(io.metadata); ++ } + + if (ns->ext) { + length += meta_len; +-- +2.27.0 + diff --git a/queue-5.4/objtool-don-t-fail-on-missing-symbol-table.patch b/queue-5.4/objtool-don-t-fail-on-missing-symbol-table.patch new file mode 100644 index 00000000000..5d6223203b2 --- /dev/null +++ b/queue-5.4/objtool-don-t-fail-on-missing-symbol-table.patch @@ -0,0 +1,51 @@ +From 089e7a3075b948f933159de9781604c651a6fc6e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 14 Jan 2021 16:14:01 -0600 +Subject: objtool: Don't fail on missing symbol table + +From: Josh Poimboeuf + +[ Upstream commit 1d489151e9f9d1647110277ff77282fe4d96d09b ] + +Thanks to a recent binutils change which doesn't generate unused +symbols, it's now possible for thunk_64.o be completely empty without +CONFIG_PREEMPTION: no text, no data, no symbols. + +We could edit the Makefile to only build that file when +CONFIG_PREEMPTION is enabled, but that will likely create confusion +if/when the thunks end up getting used by some other code again. + +Just ignore it and move on. + +Reported-by: Nathan Chancellor +Reviewed-by: Nathan Chancellor +Reviewed-by: Miroslav Benes +Tested-by: Nathan Chancellor +Link: https://github.com/ClangBuiltLinux/linux/issues/1254 +Signed-off-by: Josh Poimboeuf +Signed-off-by: Sasha Levin +--- + tools/objtool/elf.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c +index edba4745f25a9..693d740107a8b 100644 +--- a/tools/objtool/elf.c ++++ b/tools/objtool/elf.c +@@ -214,8 +214,11 @@ static int read_symbols(struct elf *elf) + + symtab = find_section_by_name(elf, ".symtab"); + if (!symtab) { +- WARN("missing symbol table"); +- return -1; ++ /* ++ * A missing symbol table is actually possible if it's an empty ++ * .o file. This can happen for thunk_64.o. ++ */ ++ return 0; + } + + symbols_nr = symtab->sh.sh_size / symtab->sh.sh_entsize; +-- +2.27.0 + diff --git a/queue-5.4/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch b/queue-5.4/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch new file mode 100644 index 00000000000..d7ce62d71ec --- /dev/null +++ b/queue-5.4/phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch @@ -0,0 +1,82 @@ +From e804f7ccdb3167ea755a9843720cf1c34f06373a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 30 Dec 2020 12:21:05 +0200 +Subject: phy: cpcap-usb: Fix warning for missing regulator_disable + +From: Tony Lindgren + +[ Upstream commit 764257d9069a9c19758b626cc1ba4ae079335d9e ] + +On deferred probe, we will get the following splat: + +cpcap-usb-phy cpcap-usb-phy.0: could not initialize VBUS or ID IIO: -517 +WARNING: CPU: 0 PID: 21 at drivers/regulator/core.c:2123 regulator_put+0x68/0x78 +... +(regulator_put) from [] (release_nodes+0x1b4/0x1fc) +(release_nodes) from [] (really_probe+0x104/0x4a0) +(really_probe) from [] (driver_probe_device+0x58/0xb4) + +Signed-off-by: Tony Lindgren +Link: https://lore.kernel.org/r/20201230102105.11826-1-tony@atomide.com +Signed-off-by: Vinod Koul +Signed-off-by: Sasha Levin +--- + drivers/phy/motorola/phy-cpcap-usb.c | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/phy-cpcap-usb.c +index 5baf64dfb24de..1bebad36bf2e5 100644 +--- a/drivers/phy/motorola/phy-cpcap-usb.c ++++ b/drivers/phy/motorola/phy-cpcap-usb.c +@@ -625,35 +625,42 @@ static int cpcap_usb_phy_probe(struct platform_device *pdev) + generic_phy = devm_phy_create(ddata->dev, NULL, &ops); + if (IS_ERR(generic_phy)) { + error = PTR_ERR(generic_phy); +- return PTR_ERR(generic_phy); ++ goto out_reg_disable; + } + + phy_set_drvdata(generic_phy, ddata); + + phy_provider = devm_of_phy_provider_register(ddata->dev, + of_phy_simple_xlate); +- if (IS_ERR(phy_provider)) +- return PTR_ERR(phy_provider); ++ if (IS_ERR(phy_provider)) { ++ error = PTR_ERR(phy_provider); ++ goto out_reg_disable; ++ } + + error = cpcap_usb_init_optional_pins(ddata); + if (error) +- return error; ++ goto out_reg_disable; + + cpcap_usb_init_optional_gpios(ddata); + + error = cpcap_usb_init_iio(ddata); + if (error) +- return error; ++ goto out_reg_disable; + + error = cpcap_usb_init_interrupts(pdev, ddata); + if (error) +- return error; ++ goto out_reg_disable; + + usb_add_phy_dev(&ddata->phy); + atomic_set(&ddata->active, 1); + schedule_delayed_work(&ddata->detect_work, msecs_to_jiffies(1)); + + return 0; ++ ++out_reg_disable: ++ regulator_disable(ddata->vusb); ++ ++ return error; + } + + static int cpcap_usb_phy_remove(struct platform_device *pdev) +-- +2.27.0 + diff --git a/queue-5.4/platform-x86-intel-vbtn-support-for-tablet-mode-on-d.patch b/queue-5.4/platform-x86-intel-vbtn-support-for-tablet-mode-on-d.patch new file mode 100644 index 00000000000..9f2cc1a4e58 --- /dev/null +++ b/queue-5.4/platform-x86-intel-vbtn-support-for-tablet-mode-on-d.patch @@ -0,0 +1,41 @@ +From 4f5851fbbd2f453e9ff6f1616fd9a650a8d35444 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 26 Dec 2020 15:53:06 -0500 +Subject: platform/x86: intel-vbtn: Support for tablet mode on Dell Inspiron + 7352 + +From: Arnold Gozum + +[ Upstream commit fcd38f178b785623c0325958225744f0d8a075c0 ] + +The Dell Inspiron 7352 is a 2-in-1 model that has chassis-type "Notebook". +Add this model to the dmi_switches_allow_list. + +Signed-off-by: Arnold Gozum +Link: https://lore.kernel.org/r/20201226205307.249659-1-arngozum@gmail.com +Signed-off-by: Hans de Goede +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/intel-vbtn.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c +index 37035dca469cf..d4fc2cbf78703 100644 +--- a/drivers/platform/x86/intel-vbtn.c ++++ b/drivers/platform/x86/intel-vbtn.c +@@ -203,6 +203,12 @@ static const struct dmi_system_id dmi_switches_allow_list[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "Switch SA5-271"), + }, + }, ++ { ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7352"), ++ }, ++ }, + {} /* Array terminator */ + }; + +-- +2.27.0 + diff --git a/queue-5.4/platform-x86-touchscreen_dmi-add-swap-x-y-quirk-for-.patch b/queue-5.4/platform-x86-touchscreen_dmi-add-swap-x-y-quirk-for-.patch new file mode 100644 index 00000000000..e905c3582a6 --- /dev/null +++ b/queue-5.4/platform-x86-touchscreen_dmi-add-swap-x-y-quirk-for-.patch @@ -0,0 +1,85 @@ +From 38266db298ed20a404bdf5c53f87ab12596425aa Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 24 Dec 2020 14:51:58 +0100 +Subject: platform/x86: touchscreen_dmi: Add swap-x-y quirk for Goodix + touchscreen on Estar Beauty HD tablet + +From: Hans de Goede + +[ Upstream commit 46c54cf2706122c37497896d56d67b0c0aca2ede ] + +The Estar Beauty HD (MID 7316R) tablet uses a Goodix touchscreen, +with the X and Y coordinates swapped compared to the LCD panel. + +Add a touchscreen_dmi entry for this adding a "touchscreen-swapped-x-y" +device-property to the i2c-client instantiated for this device before +the driver binds. + +This is the first entry of a Goodix touchscreen to touchscreen_dmi.c, +so far DMI quirks for Goodix touchscreen's have been added directly +to drivers/input/touchscreen/goodix.c. Currently there are 3 +DMI tables in goodix.c: +1. rotated_screen[] for devices where the touchscreen is rotated + 180 degrees vs the LCD panel +2. inverted_x_screen[] for devices where the X axis is inverted +3. nine_bytes_report[] for devices which use a non standard touch + report size + +Arguably only 3. really needs to be inside the driver and the other +2 cases are better handled through the generic touchscreen DMI quirk +mechanism from touchscreen_dmi.c, which allows adding device-props to +any i2c-client. Esp. now that goodix.c is using the generic +touchscreen_properties code. + +Alternative to the approach from this patch we could add a 4th +dmi_system_id table for devices with swapped-x-y axis to goodix.c, +but that seems undesirable. + +Cc: Bastien Nocera +Cc: Dmitry Torokhov +Signed-off-by: Hans de Goede +Link: https://lore.kernel.org/r/20201224135158.10976-1-hdegoede@redhat.com +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/touchscreen_dmi.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c +index 1e072dbba30d6..7ed1189a7200c 100644 +--- a/drivers/platform/x86/touchscreen_dmi.c ++++ b/drivers/platform/x86/touchscreen_dmi.c +@@ -231,6 +231,16 @@ static const struct ts_dmi_data digma_citi_e200_data = { + .properties = digma_citi_e200_props, + }; + ++static const struct property_entry estar_beauty_hd_props[] = { ++ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), ++ { } ++}; ++ ++static const struct ts_dmi_data estar_beauty_hd_data = { ++ .acpi_name = "GDIX1001:00", ++ .properties = estar_beauty_hd_props, ++}; ++ + static const struct property_entry gp_electronic_t701_props[] = { + PROPERTY_ENTRY_U32("touchscreen-size-x", 960), + PROPERTY_ENTRY_U32("touchscreen-size-y", 640), +@@ -747,6 +757,14 @@ static const struct dmi_system_id touchscreen_dmi_table[] = { + DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), + }, + }, ++ { ++ /* Estar Beauty HD (MID 7316R) */ ++ .driver_data = (void *)&estar_beauty_hd_data, ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Estar"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"), ++ }, ++ }, + { + /* GP-electronic T701 */ + .driver_data = (void *)&gp_electronic_t701_data, +-- +2.27.0 + diff --git a/queue-5.4/scsi-fnic-fix-memleak-in-vnic_dev_init_devcmd2.patch b/queue-5.4/scsi-fnic-fix-memleak-in-vnic_dev_init_devcmd2.patch new file mode 100644 index 00000000000..f8c83289f0d --- /dev/null +++ b/queue-5.4/scsi-fnic-fix-memleak-in-vnic_dev_init_devcmd2.patch @@ -0,0 +1,58 @@ +From a8b54860daaeb4d9514269333a751b3ff1a69fd8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 25 Dec 2020 16:35:20 +0800 +Subject: scsi: fnic: Fix memleak in vnic_dev_init_devcmd2 + +From: Dinghao Liu + +[ Upstream commit d6e3ae76728ccde49271d9f5acfebbea0c5625a3 ] + +When ioread32() returns 0xFFFFFFFF, we should execute cleanup functions +like other error handling paths before returning. + +Link: https://lore.kernel.org/r/20201225083520.22015-1-dinghao.liu@zju.edu.cn +Acked-by: Karan Tilak Kumar +Signed-off-by: Dinghao Liu +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/fnic/vnic_dev.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/drivers/scsi/fnic/vnic_dev.c b/drivers/scsi/fnic/vnic_dev.c +index 522636e946282..c8bf8c7ada6a7 100644 +--- a/drivers/scsi/fnic/vnic_dev.c ++++ b/drivers/scsi/fnic/vnic_dev.c +@@ -444,7 +444,8 @@ int vnic_dev_init_devcmd2(struct vnic_dev *vdev) + fetch_index = ioread32(&vdev->devcmd2->wq.ctrl->fetch_index); + if (fetch_index == 0xFFFFFFFF) { /* check for hardware gone */ + pr_err("error in devcmd2 init"); +- return -ENODEV; ++ err = -ENODEV; ++ goto err_free_wq; + } + + /* +@@ -460,7 +461,7 @@ int vnic_dev_init_devcmd2(struct vnic_dev *vdev) + err = vnic_dev_alloc_desc_ring(vdev, &vdev->devcmd2->results_ring, + DEVCMD2_RING_SIZE, DEVCMD2_DESC_SIZE); + if (err) +- goto err_free_wq; ++ goto err_disable_wq; + + vdev->devcmd2->result = + (struct devcmd2_result *) vdev->devcmd2->results_ring.descs; +@@ -481,8 +482,9 @@ int vnic_dev_init_devcmd2(struct vnic_dev *vdev) + + err_free_desc_ring: + vnic_dev_free_desc_ring(vdev, &vdev->devcmd2->results_ring); +-err_free_wq: ++err_disable_wq: + vnic_wq_disable(&vdev->devcmd2->wq); ++err_free_wq: + vnic_wq_free(&vdev->devcmd2->wq); + err_free_devcmd2: + kfree(vdev->devcmd2); +-- +2.27.0 + diff --git a/queue-5.4/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch b/queue-5.4/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch new file mode 100644 index 00000000000..58a65169df9 --- /dev/null +++ b/queue-5.4/scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch @@ -0,0 +1,85 @@ +From 2d5e0e0ee2aaed859f035a0eebdd344b8a18de95 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 12 Jan 2021 09:06:38 -0600 +Subject: scsi: ibmvfc: Set default timeout to avoid crash during migration + +From: Brian King + +[ Upstream commit 764907293edc1af7ac857389af9dc858944f53dc ] + +While testing live partition mobility, we have observed occasional crashes +of the Linux partition. What we've seen is that during the live migration, +for specific configurations with large amounts of memory, slow network +links, and workloads that are changing memory a lot, the partition can end +up being suspended for 30 seconds or longer. This resulted in the following +scenario: + +CPU 0 CPU 1 +------------------------------- ---------------------------------- +scsi_queue_rq migration_store + -> blk_mq_start_request -> rtas_ibm_suspend_me + -> blk_add_timer -> on_each_cpu(rtas_percpu_suspend_me + _______________________________________V + | + V + -> IPI from CPU 1 + -> rtas_percpu_suspend_me + -> __rtas_suspend_last_cpu + +-- Linux partition suspended for > 30 seconds -- + -> for_each_online_cpu(cpu) + plpar_hcall_norets(H_PROD + -> scsi_dispatch_cmd + -> scsi_times_out + -> scsi_abort_command + -> queue_delayed_work + -> ibmvfc_queuecommand_lck + -> ibmvfc_send_event + -> ibmvfc_send_crq + - returns H_CLOSED + <- returns SCSI_MLQUEUE_HOST_BUSY +-> __blk_mq_requeue_request + + -> scmd_eh_abort_handler + -> scsi_try_to_abort_cmd + - returns SUCCESS + -> scsi_queue_insert + +Normally, the SCMD_STATE_COMPLETE bit would protect against the command +completion and the timeout, but that doesn't work here, since we don't +check that at all in the SCSI_MLQUEUE_HOST_BUSY path. + +In this case we end up calling scsi_queue_insert on a request that has +already been queued, or possibly even freed, and we crash. + +The patch below simply increases the default I/O timeout to avoid this race +condition. This is also the timeout value that nearly all IBM SAN storage +recommends setting as the default value. + +Link: https://lore.kernel.org/r/1610463998-19791-1-git-send-email-brking@linux.vnet.ibm.com +Signed-off-by: Brian King +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/ibmvscsi/ibmvfc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c +index 8a76284b59b08..523809a8a2323 100644 +--- a/drivers/scsi/ibmvscsi/ibmvfc.c ++++ b/drivers/scsi/ibmvscsi/ibmvfc.c +@@ -2881,8 +2881,10 @@ static int ibmvfc_slave_configure(struct scsi_device *sdev) + unsigned long flags = 0; + + spin_lock_irqsave(shost->host_lock, flags); +- if (sdev->type == TYPE_DISK) ++ if (sdev->type == TYPE_DISK) { + sdev->allow_restart = 1; ++ blk_queue_rq_timeout(sdev->request_queue, 120 * HZ); ++ } + spin_unlock_irqrestore(shost->host_lock, flags); + return 0; + } +-- +2.27.0 + diff --git a/queue-5.4/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch b/queue-5.4/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch new file mode 100644 index 00000000000..ee9a8551d39 --- /dev/null +++ b/queue-5.4/scsi-libfc-avoid-invoking-response-handler-twice-if-.patch @@ -0,0 +1,95 @@ +From a7acb0ea27cbf352fda1ff0997a588ec1373dd13 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 15 Dec 2020 11:47:31 -0800 +Subject: scsi: libfc: Avoid invoking response handler twice if ep is already + completed +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Javed Hasan + +[ Upstream commit b2b0f16fa65e910a3ec8771206bb49ee87a54ac5 ] + +A race condition exists between the response handler getting called because +of exchange_mgr_reset() (which clears out all the active XIDs) and the +response we get via an interrupt. + +Sequence of events: + + rport ba0200: Port timeout, state PLOGI + rport ba0200: Port entered PLOGI state from PLOGI state + xid 1052: Exchange timer armed : 20000 msecs  xid timer armed here + rport ba0200: Received LOGO request while in state PLOGI + rport ba0200: Delete port + rport ba0200: work event 3 + rport ba0200: lld callback ev 3 + bnx2fc: rport_event_hdlr: event = 3, port_id = 0xba0200 + bnx2fc: ba0200 - rport not created Yet!! + /* Here we reset any outstanding exchanges before + freeing rport using the exch_mgr_reset() */ + xid 1052: Exchange timer canceled + /* Here we got two responses for one xid */ + xid 1052: invoking resp(), esb 20000000 state 3 + xid 1052: invoking resp(), esb 20000000 state 3 + xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 + xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 + +Skip the response if the exchange is already completed. + +Link: https://lore.kernel.org/r/20201215194731.2326-1-jhasan@marvell.com +Signed-off-by: Javed Hasan +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/libfc/fc_exch.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c +index 52e8666598531..e5b18e5d46dac 100644 +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c +@@ -1619,8 +1619,13 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) + rc = fc_exch_done_locked(ep); + WARN_ON(fc_seq_exch(sp) != ep); + spin_unlock_bh(&ep->ex_lock); +- if (!rc) ++ if (!rc) { + fc_exch_delete(ep); ++ } else { ++ FC_EXCH_DBG(ep, "ep is completed already," ++ "hence skip calling the resp\n"); ++ goto skip_resp; ++ } + } + + /* +@@ -1639,6 +1644,7 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp) + if (!fc_invoke_resp(ep, sp, fp)) + fc_frame_free(fp); + ++skip_resp: + fc_exch_release(ep); + return; + rel: +@@ -1895,10 +1901,16 @@ static void fc_exch_reset(struct fc_exch *ep) + + fc_exch_hold(ep); + +- if (!rc) ++ if (!rc) { + fc_exch_delete(ep); ++ } else { ++ FC_EXCH_DBG(ep, "ep is completed already," ++ "hence skip calling the resp\n"); ++ goto skip_resp; ++ } + + fc_invoke_resp(ep, sp, ERR_PTR(-FC_EX_CLOSED)); ++skip_resp: + fc_seq_set_resp(sp, NULL, ep->arg); + fc_exch_release(ep); + } +-- +2.27.0 + diff --git a/queue-5.4/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch b/queue-5.4/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch new file mode 100644 index 00000000000..2a00b4843be --- /dev/null +++ b/queue-5.4/scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch @@ -0,0 +1,45 @@ +From 4ef8aec01290d446deffe9ff1c70b5d8179d6b5e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 11 Jan 2021 15:25:41 +0100 +Subject: scsi: scsi_transport_srp: Don't block target in failfast state + +From: Martin Wilck + +[ Upstream commit 72eeb7c7151302ef007f1acd018cbf6f30e50321 ] + +If the port is in SRP_RPORT_FAIL_FAST state when srp_reconnect_rport() is +entered, a transition to SDEV_BLOCK would be illegal, and a kernel WARNING +would be triggered. Skip scsi_target_block() in this case. + +Link: https://lore.kernel.org/r/20210111142541.21534-1-mwilck@suse.com +Reviewed-by: Bart Van Assche +Signed-off-by: Martin Wilck +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/scsi_transport_srp.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c +index d4d1104fac991..8cd0a87764dfd 100644 +--- a/drivers/scsi/scsi_transport_srp.c ++++ b/drivers/scsi/scsi_transport_srp.c +@@ -541,7 +541,14 @@ int srp_reconnect_rport(struct srp_rport *rport) + res = mutex_lock_interruptible(&rport->mutex); + if (res) + goto out; +- scsi_target_block(&shost->shost_gendev); ++ if (rport->state != SRP_RPORT_FAIL_FAST) ++ /* ++ * sdev state must be SDEV_TRANSPORT_OFFLINE, transition ++ * to SDEV_BLOCK is illegal. Calling scsi_target_unblock() ++ * later is ok though, scsi_internal_device_unblock_nowait() ++ * treats SDEV_TRANSPORT_OFFLINE like SDEV_BLOCK. ++ */ ++ scsi_target_block(&shost->shost_gendev); + res = rport->state != SRP_RPORT_LOST ? i->f->reconnect(rport) : -ENODEV; + pr_debug("%s (state %d): transport.reconnect() returned %d\n", + dev_name(&shost->shost_gendev), rport->state, res); +-- +2.27.0 + diff --git a/queue-5.4/selftests-powerpc-only-test-lwm-stmw-on-big-endian.patch b/queue-5.4/selftests-powerpc-only-test-lwm-stmw-on-big-endian.patch new file mode 100644 index 00000000000..d857c13d79a --- /dev/null +++ b/queue-5.4/selftests-powerpc-only-test-lwm-stmw-on-big-endian.patch @@ -0,0 +1,61 @@ +From d368333a38c44118f82b51a880b62aadc0596524 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 19 Jan 2021 15:18:00 +1100 +Subject: selftests/powerpc: Only test lwm/stmw on big endian + +From: Michael Ellerman + +[ Upstream commit dd3a44c06f7b4f14e90065bf05d62c255b20005f ] + +Newer binutils (>= 2.36) refuse to assemble lmw/stmw when building in +little endian mode. That breaks compilation of our alignment handler +test: + + /tmp/cco4l14N.s: Assembler messages: + /tmp/cco4l14N.s:1440: Error: `lmw' invalid when little-endian + /tmp/cco4l14N.s:1814: Error: `stmw' invalid when little-endian + make[2]: *** [../../lib.mk:139: /output/kselftest/powerpc/alignment/alignment_handler] Error 1 + +These tests do pass on little endian machines, as the kernel will +still emulate those instructions even when running little +endian (which is arguably a kernel bug). + +But we don't really need to test that case, so ifdef those +instructions out to get the alignment test building again. + +Reported-by: Libor Pechacek +Signed-off-by: Michael Ellerman +Tested-by: Libor Pechacek +Link: https://lore.kernel.org/r/20210119041800.3093047-1-mpe@ellerman.id.au +Signed-off-by: Sasha Levin +--- + .../testing/selftests/powerpc/alignment/alignment_handler.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tools/testing/selftests/powerpc/alignment/alignment_handler.c b/tools/testing/selftests/powerpc/alignment/alignment_handler.c +index 0453c50c949cb..0725239bbd85c 100644 +--- a/tools/testing/selftests/powerpc/alignment/alignment_handler.c ++++ b/tools/testing/selftests/powerpc/alignment/alignment_handler.c +@@ -380,7 +380,6 @@ int test_alignment_handler_integer(void) + LOAD_DFORM_TEST(ldu); + LOAD_XFORM_TEST(ldx); + LOAD_XFORM_TEST(ldux); +- LOAD_DFORM_TEST(lmw); + STORE_DFORM_TEST(stb); + STORE_XFORM_TEST(stbx); + STORE_DFORM_TEST(stbu); +@@ -399,7 +398,11 @@ int test_alignment_handler_integer(void) + STORE_XFORM_TEST(stdx); + STORE_DFORM_TEST(stdu); + STORE_XFORM_TEST(stdux); ++ ++#ifdef __BIG_ENDIAN__ ++ LOAD_DFORM_TEST(lmw); + STORE_DFORM_TEST(stmw); ++#endif + + return rc; + } +-- +2.27.0 + diff --git a/queue-5.4/series b/queue-5.4/series index 388e1cb2c6d..efe92eb72a5 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -11,3 +11,22 @@ btrfs-backref-don-t-add-refs-from-shared-block-when-resolving-normal-backref.pat btrfs-backref-only-search-backref-entries-from-leaves-of-the-same-root.patch btrfs-backref-use-correct-count-to-resolve-normal-data-refs.patch net_sched-gen_estimator-support-large-ewma-log.patch +phy-cpcap-usb-fix-warning-for-missing-regulator_disa.patch +platform-x86-touchscreen_dmi-add-swap-x-y-quirk-for-.patch +platform-x86-intel-vbtn-support-for-tablet-mode-on-d.patch +x86-__always_inline-__-rd-wr-msr.patch +scsi-scsi_transport_srp-don-t-block-target-in-failfa.patch +scsi-libfc-avoid-invoking-response-handler-twice-if-.patch +scsi-fnic-fix-memleak-in-vnic_dev_init_devcmd2.patch +asoc-sof-intel-hda-resume-codec-to-do-jack-detection.patch +mac80211-fix-fast-rx-encryption-check.patch +scsi-ibmvfc-set-default-timeout-to-avoid-crash-durin.patch +alsa-hda-add-cometlake-r-pci-id.patch +udf-fix-the-problem-that-the-disc-content-is-not-dis.patch +nvme-check-the-prinfo-bit-before-deciding-the-host-b.patch +selftests-powerpc-only-test-lwm-stmw-on-big-endian.patch +drm-amd-display-update-dram_clock_change_latency-for.patch +drm-amd-display-change-function-decide_dp_link_setti.patch +objtool-don-t-fail-on-missing-symbol-table.patch +kthread-extract-kthread_is_per_cpu.patch +workqueue-restrict-affinity-change-to-rescuer.patch diff --git a/queue-5.4/udf-fix-the-problem-that-the-disc-content-is-not-dis.patch b/queue-5.4/udf-fix-the-problem-that-the-disc-content-is-not-dis.patch new file mode 100644 index 00000000000..4ddf7cd5650 --- /dev/null +++ b/queue-5.4/udf-fix-the-problem-that-the-disc-content-is-not-dis.patch @@ -0,0 +1,74 @@ +From 0a16a8b79e5ffbd64221ce25ade4c535ee12628f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 14 Jan 2021 15:57:41 +0800 +Subject: udf: fix the problem that the disc content is not displayed + +From: lianzhi chang + +[ Upstream commit 5cdc4a6950a883594e9640b1decb3fcf6222a594 ] + +When the capacity of the disc is too large (assuming the 4.7G +specification), the disc (UDF file system) will be burned +multiple times in the windows (Multisession Usage). When the +remaining capacity of the CD is less than 300M (estimated +value, for reference only), open the CD in the Linux system, +the content of the CD is displayed as blank (the kernel will +say "No VRS found"). Windows can display the contents of the +CD normally. +Through analysis, in the "fs/udf/super.c": udf_check_vsd +function, the actual value of VSD_MAX_SECTOR_OFFSET may +be much larger than 0x800000. According to the current code +logic, it is found that the type of sbi->s_session is "__s32", + when the remaining capacity of the disc is less than 300M +(take a set of test values: sector=3154903040, +sbi->s_session=1540464, sb->s_blocksize_bits=11 ), the +calculation result of "sbi->s_session << sb->s_blocksize_bits" + will overflow. Therefore, it is necessary to convert the +type of s_session to "loff_t" (when udf_check_vsd starts, +assign a value to _sector, which is also converted in this +way), so that the result will not overflow, and then the +content of the disc can be displayed normally. + +Link: https://lore.kernel.org/r/20210114075741.30448-1-changlianzhi@uniontech.com +Signed-off-by: lianzhi chang +Signed-off-by: Jan Kara +Signed-off-by: Sasha Levin +--- + fs/udf/super.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/fs/udf/super.c b/fs/udf/super.c +index 4aba4878ed967..8bb001c7927f0 100644 +--- a/fs/udf/super.c ++++ b/fs/udf/super.c +@@ -705,6 +705,7 @@ static int udf_check_vsd(struct super_block *sb) + struct buffer_head *bh = NULL; + int nsr = 0; + struct udf_sb_info *sbi; ++ loff_t session_offset; + + sbi = UDF_SB(sb); + if (sb->s_blocksize < sizeof(struct volStructDesc)) +@@ -712,7 +713,8 @@ static int udf_check_vsd(struct super_block *sb) + else + sectorsize = sb->s_blocksize; + +- sector += (((loff_t)sbi->s_session) << sb->s_blocksize_bits); ++ session_offset = (loff_t)sbi->s_session << sb->s_blocksize_bits; ++ sector += session_offset; + + udf_debug("Starting at sector %u (%lu byte sectors)\n", + (unsigned int)(sector >> sb->s_blocksize_bits), +@@ -757,8 +759,7 @@ static int udf_check_vsd(struct super_block *sb) + + if (nsr > 0) + return 1; +- else if (!bh && sector - (sbi->s_session << sb->s_blocksize_bits) == +- VSD_FIRST_SECTOR_OFFSET) ++ else if (!bh && sector - session_offset == VSD_FIRST_SECTOR_OFFSET) + return -1; + else + return 0; +-- +2.27.0 + diff --git a/queue-5.4/workqueue-restrict-affinity-change-to-rescuer.patch b/queue-5.4/workqueue-restrict-affinity-change-to-rescuer.patch new file mode 100644 index 00000000000..a4ae06ca3ca --- /dev/null +++ b/queue-5.4/workqueue-restrict-affinity-change-to-rescuer.patch @@ -0,0 +1,58 @@ +From 17ebd3ab3f77f1ec27a5d0721a8e5dbfdf59beb4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 15 Jan 2021 19:08:36 +0100 +Subject: workqueue: Restrict affinity change to rescuer + +From: Peter Zijlstra + +[ Upstream commit 640f17c82460e9724fd256f0a1f5d99e7ff0bda4 ] + +create_worker() will already set the right affinity using +kthread_bind_mask(), this means only the rescuer will need to change +it's affinity. + +Howveer, while in cpu-hot-unplug a regular task is not allowed to run +on online&&!active as it would be pushed away quite agressively. We +need KTHREAD_IS_PER_CPU to survive in that environment. + +Therefore set the affinity after getting that magic flag. + +Signed-off-by: Peter Zijlstra (Intel) +Reviewed-by: Valentin Schneider +Tested-by: Valentin Schneider +Link: https://lkml.kernel.org/r/20210121103506.826629830@infradead.org +Signed-off-by: Sasha Levin +--- + kernel/workqueue.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 28e52657e0930..29c36c0290623 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1847,12 +1847,6 @@ static void worker_attach_to_pool(struct worker *worker, + { + mutex_lock(&wq_pool_attach_mutex); + +- /* +- * set_cpus_allowed_ptr() will fail if the cpumask doesn't have any +- * online CPUs. It'll be re-applied when any of the CPUs come up. +- */ +- set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask); +- + /* + * The wq_pool_attach_mutex ensures %POOL_DISASSOCIATED remains + * stable across this function. See the comments above the flag +@@ -1861,6 +1855,9 @@ static void worker_attach_to_pool(struct worker *worker, + if (pool->flags & POOL_DISASSOCIATED) + worker->flags |= WORKER_UNBOUND; + ++ if (worker->rescue_wq) ++ set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask); ++ + list_add_tail(&worker->node, &pool->workers); + worker->pool = pool; + +-- +2.27.0 + diff --git a/queue-5.4/x86-__always_inline-__-rd-wr-msr.patch b/queue-5.4/x86-__always_inline-__-rd-wr-msr.patch new file mode 100644 index 00000000000..72863a3784e --- /dev/null +++ b/queue-5.4/x86-__always_inline-__-rd-wr-msr.patch @@ -0,0 +1,48 @@ +From 6230f5baa8ad4b154e767a380c7acda3a95d8d7a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 7 Jan 2021 11:14:25 +0100 +Subject: x86: __always_inline __{rd,wr}msr() + +From: Peter Zijlstra + +[ Upstream commit 66a425011c61e71560c234492d204e83cfb73d1d ] + +When the compiler choses to not inline the trivial MSR helpers: + + vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0xce: call to __wrmsr.constprop.14() leaves .noinstr.text section + +Reported-by: Randy Dunlap +Signed-off-by: Peter Zijlstra (Intel) +Signed-off-by: Thomas Gleixner +Acked-by: Randy Dunlap # build-tested +Link: https://lore.kernel.org/r/X/bf3gV+BW7kGEsB@hirez.programming.kicks-ass.net +Signed-off-by: Sasha Levin +--- + arch/x86/include/asm/msr.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h +index 86f20d520a079..b40d0295d8129 100644 +--- a/arch/x86/include/asm/msr.h ++++ b/arch/x86/include/asm/msr.h +@@ -88,7 +88,7 @@ static inline void do_trace_rdpmc(unsigned int msr, u64 val, int failed) {} + * think of extending them - you will be slapped with a stinking trout or a frozen + * shark will reach you, wherever you are! You've been warned. + */ +-static inline unsigned long long notrace __rdmsr(unsigned int msr) ++static __always_inline unsigned long long __rdmsr(unsigned int msr) + { + DECLARE_ARGS(val, low, high); + +@@ -100,7 +100,7 @@ static inline unsigned long long notrace __rdmsr(unsigned int msr) + return EAX_EDX_VAL(val, low, high); + } + +-static inline void notrace __wrmsr(unsigned int msr, u32 low, u32 high) ++static __always_inline void __wrmsr(unsigned int msr, u32 low, u32 high) + { + asm volatile("1: wrmsr\n" + "2:\n" +-- +2.27.0 + -- 2.47.3