--- /dev/null
+From c5b688ac50e959f65c0f565970a2b36bfcc538e9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Jan 2021 11:15:15 +0800
+Subject: ALSA: hda: Add Cometlake-R PCI ID
+
+From: Kai-Chuan Hsieh <kaichuan.hsieh@canonical.com>
+
+[ Upstream commit f84d3a1ec375e46a55cc3ba85c04272b24bd3921 ]
+
+Add HD Audio Device PCI ID for the Intel Cometlake-R platform
+
+Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Signed-off-by: Kai-Chuan Hsieh <kaichuan.hsieh@canonical.com>
+Link: https://lore.kernel.org/r/20210115031515.13100-1-kaichuan.hsieh@canonical.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From adf0cc125ece47904ea50efca27631d3de7a2e68 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 13 Jan 2021 02:11:23 +0800
+Subject: ASoC: SOF: Intel: hda: Resume codec to do jack detection
+
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+
+[ 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 <kai.heng.feng@canonical.com>
+Link: https://lore.kernel.org/r/20210112181128.1229827-1-kai.heng.feng@canonical.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 661a30ffb6246f2731ac6108cc190c698c1c43ac Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <bing.guo@amd.com>
+
+[ 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 <daniel.wheeler@amd.com>
+Signed-off-by: Bing Guo <bing.guo@amd.com>
+Reviewed-by: Jun Lei <Jun.Lei@amd.com>
+Acked-by: Anson Jacob <anson.jacob@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 99a176fa7f852d94d713c47410933faf7b3331ca Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 8 Jan 2021 12:27:51 -0500
+Subject: drm/amd/display: Update dram_clock_change_latency for DCN2.1
+
+From: Jake Wang <haonan.wang2@amd.com>
+
+[ 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 <sung.lee@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From f8ca124cfe0a28e7111029d8647ffff47e1b102a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 12 Jan 2021 11:24:04 +0100
+Subject: kthread: Extract KTHREAD_IS_PER_CPU
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+[ 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) <peterz@infradead.org>
+Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
+Tested-by: Valentin Schneider <valentin.schneider@arm.com>
+Link: https://lkml.kernel.org/r/20210121103506.557620262@infradead.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From efa8c82a561498b7f05d605536099f5d83bf497a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 18 Dec 2020 19:47:17 +0100
+Subject: mac80211: fix fast-rx encryption check
+
+From: Felix Fietkau <nbd@nbd.name>
+
+[ Upstream commit 622d3b4e39381262da7b18ca1ed1311df227de86 ]
+
+When using WEP, the default unicast key needs to be selected, instead of
+the STA PTK.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Link: https://lore.kernel.org/r/20201218184718.93650-5-nbd@nbd.name
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From cfc5b8f69e915e540f467196703a54fde6377ac3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 18:55:07 -0700
+Subject: nvme: check the PRINFO bit before deciding the host buffer length
+
+From: Revanth Rajashekar <revanth.rajashekar@intel.com>
+
+[ 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 <revanth.rajashekar@intel.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 089e7a3075b948f933159de9781604c651a6fc6e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 16:14:01 -0600
+Subject: objtool: Don't fail on missing symbol table
+
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+
+[ 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 <natechancellor@gmail.com>
+Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
+Reviewed-by: Miroslav Benes <mbenes@suse.cz>
+Tested-by: Nathan Chancellor <natechancellor@gmail.com>
+Link: https://github.com/ClangBuiltLinux/linux/issues/1254
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From e804f7ccdb3167ea755a9843720cf1c34f06373a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 30 Dec 2020 12:21:05 +0200
+Subject: phy: cpcap-usb: Fix warning for missing regulator_disable
+
+From: Tony Lindgren <tony@atomide.com>
+
+[ 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 [<c068ebf0>] (release_nodes+0x1b4/0x1fc)
+(release_nodes) from [<c068a9a4>] (really_probe+0x104/0x4a0)
+(really_probe) from [<c068b034>] (driver_probe_device+0x58/0xb4)
+
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Link: https://lore.kernel.org/r/20201230102105.11826-1-tony@atomide.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 4f5851fbbd2f453e9ff6f1616fd9a650a8d35444 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <arngozum@gmail.com>
+
+[ 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 <arngozum@gmail.com>
+Link: https://lore.kernel.org/r/20201226205307.249659-1-arngozum@gmail.com
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 38266db298ed20a404bdf5c53f87ab12596425aa Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <hdegoede@redhat.com>
+
+[ 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 <hadess@hadess.net>
+Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Link: https://lore.kernel.org/r/20201224135158.10976-1-hdegoede@redhat.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From a8b54860daaeb4d9514269333a751b3ff1a69fd8 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 25 Dec 2020 16:35:20 +0800
+Subject: scsi: fnic: Fix memleak in vnic_dev_init_devcmd2
+
+From: Dinghao Liu <dinghao.liu@zju.edu.cn>
+
+[ 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 <kartilak@cisco.com>
+Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 2d5e0e0ee2aaed859f035a0eebdd344b8a18de95 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 12 Jan 2021 09:06:38 -0600
+Subject: scsi: ibmvfc: Set default timeout to avoid crash during migration
+
+From: Brian King <brking@linux.vnet.ibm.com>
+
+[ 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 <brking@linux.vnet.ibm.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From a7acb0ea27cbf352fda1ff0997a588ec1373dd13 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <jhasan@marvell.com>
+
+[ 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 <jhasan@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 4ef8aec01290d446deffe9ff1c70b5d8179d6b5e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 11 Jan 2021 15:25:41 +0100
+Subject: scsi: scsi_transport_srp: Don't block target in failfast state
+
+From: Martin Wilck <mwilck@suse.com>
+
+[ 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 <bvanassche@acm.org>
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From d368333a38c44118f82b51a880b62aadc0596524 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 19 Jan 2021 15:18:00 +1100
+Subject: selftests/powerpc: Only test lwm/stmw on big endian
+
+From: Michael Ellerman <mpe@ellerman.id.au>
+
+[ 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 <lpechacek@suse.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Tested-by: Libor Pechacek <lpechacek@suse.com>
+Link: https://lore.kernel.org/r/20210119041800.3093047-1-mpe@ellerman.id.au
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ .../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
+
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
--- /dev/null
+From 0a16a8b79e5ffbd64221ce25ade4c535ee12628f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 15:57:41 +0800
+Subject: udf: fix the problem that the disc content is not displayed
+
+From: lianzhi chang <changlianzhi@uniontech.com>
+
+[ 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 <changlianzhi@uniontech.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 17ebd3ab3f77f1ec27a5d0721a8e5dbfdf59beb4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Jan 2021 19:08:36 +0100
+Subject: workqueue: Restrict affinity change to rescuer
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+[ 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) <peterz@infradead.org>
+Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
+Tested-by: Valentin Schneider <valentin.schneider@arm.com>
+Link: https://lkml.kernel.org/r/20210121103506.826629830@infradead.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
--- /dev/null
+From 6230f5baa8ad4b154e767a380c7acda3a95d8d7a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 7 Jan 2021 11:14:25 +0100
+Subject: x86: __always_inline __{rd,wr}msr()
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+[ 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 <rdunlap@infradead.org>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
+Link: https://lore.kernel.org/r/X/bf3gV+BW7kGEsB@hirez.programming.kicks-ass.net
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+