]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.10
authorSasha Levin <sashal@kernel.org>
Mon, 8 Jul 2024 14:41:26 +0000 (10:41 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 8 Jul 2024 14:41:26 +0000 (10:41 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.10/alsa-hda-realtek-enable-headset-mic-of-jp-ik-leap-w5.patch [new file with mode: 0644]
queue-5.10/i2c-pnx-fix-potential-deadlock-warning-from-del_time.patch [new file with mode: 0644]
queue-5.10/kbuild-fix-short-log-for-as-in-link-vmlinux.sh.patch [new file with mode: 0644]
queue-5.10/nvme-adjust-multiples-of-nvme_ctrl_page_size-in-offs.patch [new file with mode: 0644]
queue-5.10/nvme-multipath-find-numa-path-only-for-online-numa-n.patch [new file with mode: 0644]
queue-5.10/nvmet-fix-a-possible-leak-when-destroy-a-ctrl-during.patch [new file with mode: 0644]
queue-5.10/platform-x86-touchscreen_dmi-add-info-for-globalspac.patch [new file with mode: 0644]
queue-5.10/platform-x86-touchscreen_dmi-add-info-for-the-ezpad-.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/alsa-hda-realtek-enable-headset-mic-of-jp-ik-leap-w5.patch b/queue-5.10/alsa-hda-realtek-enable-headset-mic-of-jp-ik-leap-w5.patch
new file mode 100644 (file)
index 0000000..28cc30f
--- /dev/null
@@ -0,0 +1,71 @@
+From c10142441a73f40417bc1b8eaf65a20334c7a189 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 13:50:09 +0800
+Subject: ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897
+
+From: Jian-Hong Pan <jhp@endlessos.org>
+
+[ Upstream commit 45e37f9ce28d248470bab4376df2687a215d1b22 ]
+
+JP-IK LEAP W502 laptop's headset mic is not enabled until
+ALC897_FIXUP_HEADSET_MIC_PIN3 quirk is applied.
+
+Here is the original pin node values:
+
+0x11 0x40000000
+0x12 0xb7a60130
+0x14 0x90170110
+0x15 0x411111f0
+0x16 0x411111f0
+0x17 0x411111f0
+0x18 0x411111f0
+0x19 0x411111f0
+0x1a 0x411111f0
+0x1b 0x03211020
+0x1c 0x411111f0
+0x1d 0x4026892d
+0x1e 0x411111f0
+0x1f 0x411111f0
+
+Signed-off-by: Jian-Hong Pan <jhp@endlessos.org>
+Link: https://lore.kernel.org/r/20240520055008.7083-2-jhp@endlessos.org
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/hda/patch_realtek.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 5c5a144e707f0..c2374556c17e6 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -10807,6 +10807,7 @@ enum {
+       ALC897_FIXUP_LENOVO_HEADSET_MODE,
+       ALC897_FIXUP_HEADSET_MIC_PIN2,
+       ALC897_FIXUP_UNIS_H3C_X500S,
++      ALC897_FIXUP_HEADSET_MIC_PIN3,
+ };
+ static const struct hda_fixup alc662_fixups[] = {
+@@ -11253,10 +11254,18 @@ static const struct hda_fixup alc662_fixups[] = {
+                       {}
+               },
+       },
++      [ALC897_FIXUP_HEADSET_MIC_PIN3] = {
++              .type = HDA_FIXUP_PINS,
++              .v.pins = (const struct hda_pintbl[]) {
++                      { 0x19, 0x03a11050 }, /* use as headset mic */
++                      { }
++              },
++      },
+ };
+ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
+       SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_FIXUP_ASUS_MODE2),
++      SND_PCI_QUIRK(0x1019, 0x9859, "JP-IK LEAP W502", ALC897_FIXUP_HEADSET_MIC_PIN3),
+       SND_PCI_QUIRK(0x1025, 0x022f, "Acer Aspire One", ALC662_FIXUP_INV_DMIC),
+       SND_PCI_QUIRK(0x1025, 0x0241, "Packard Bell DOTS", ALC662_FIXUP_INV_DMIC),
+       SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE),
+-- 
+2.43.0
+
diff --git a/queue-5.10/i2c-pnx-fix-potential-deadlock-warning-from-del_time.patch b/queue-5.10/i2c-pnx-fix-potential-deadlock-warning-from-del_time.patch
new file mode 100644 (file)
index 0000000..60f2524
--- /dev/null
@@ -0,0 +1,185 @@
+From 1b7cbf0963e25d088069e2a3460f0e109b629f77 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 28 Jun 2024 17:25:42 +0200
+Subject: i2c: pnx: Fix potential deadlock warning from del_timer_sync() call
+ in isr
+
+From: Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
+
+[ Upstream commit f63b94be6942ba82c55343e196bd09b53227618e ]
+
+When del_timer_sync() is called in an interrupt context it throws a warning
+because of potential deadlock. The timer is used only to exit from
+wait_for_completion() after a timeout so replacing the call with
+wait_for_completion_timeout() allows to remove the problematic timer and
+its related functions altogether.
+
+Fixes: 41561f28e76a ("i2c: New Philips PNX bus driver")
+Signed-off-by: Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
+Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/i2c/busses/i2c-pnx.c | 48 ++++++++----------------------------
+ 1 file changed, 10 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
+index 8c4ec7f13f5ab..b6b5a65efcbbc 100644
+--- a/drivers/i2c/busses/i2c-pnx.c
++++ b/drivers/i2c/busses/i2c-pnx.c
+@@ -15,7 +15,6 @@
+ #include <linux/ioport.h>
+ #include <linux/delay.h>
+ #include <linux/i2c.h>
+-#include <linux/timer.h>
+ #include <linux/completion.h>
+ #include <linux/platform_device.h>
+ #include <linux/io.h>
+@@ -32,7 +31,6 @@ struct i2c_pnx_mif {
+       int                     ret;            /* Return value */
+       int                     mode;           /* Interface mode */
+       struct completion       complete;       /* I/O completion */
+-      struct timer_list       timer;          /* Timeout */
+       u8 *                    buf;            /* Data buffer */
+       int                     len;            /* Length of data buffer */
+       int                     order;          /* RX Bytes to order via TX */
+@@ -117,24 +115,6 @@ static inline int wait_reset(struct i2c_pnx_algo_data *data)
+       return (timeout <= 0);
+ }
+-static inline void i2c_pnx_arm_timer(struct i2c_pnx_algo_data *alg_data)
+-{
+-      struct timer_list *timer = &alg_data->mif.timer;
+-      unsigned long expires = msecs_to_jiffies(alg_data->timeout);
+-
+-      if (expires <= 1)
+-              expires = 2;
+-
+-      del_timer_sync(timer);
+-
+-      dev_dbg(&alg_data->adapter.dev, "Timer armed at %lu plus %lu jiffies.\n",
+-              jiffies, expires);
+-
+-      timer->expires = jiffies + expires;
+-
+-      add_timer(timer);
+-}
+-
+ /**
+  * i2c_pnx_start - start a device
+  * @slave_addr:               slave address
+@@ -259,8 +239,6 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data)
+                               ~(mcntrl_afie | mcntrl_naie | mcntrl_drmie),
+                                 I2C_REG_CTL(alg_data));
+-                      del_timer_sync(&alg_data->mif.timer);
+-
+                       dev_dbg(&alg_data->adapter.dev,
+                               "%s(): Waking up xfer routine.\n",
+                               __func__);
+@@ -276,8 +254,6 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data)
+                       ~(mcntrl_afie | mcntrl_naie | mcntrl_drmie),
+                         I2C_REG_CTL(alg_data));
+-              /* Stop timer. */
+-              del_timer_sync(&alg_data->mif.timer);
+               dev_dbg(&alg_data->adapter.dev,
+                       "%s(): Waking up xfer routine after zero-xfer.\n",
+                       __func__);
+@@ -364,8 +340,6 @@ static int i2c_pnx_master_rcv(struct i2c_pnx_algo_data *alg_data)
+                                mcntrl_drmie | mcntrl_daie);
+                       iowrite32(ctl, I2C_REG_CTL(alg_data));
+-                      /* Kill timer. */
+-                      del_timer_sync(&alg_data->mif.timer);
+                       complete(&alg_data->mif.complete);
+               }
+       }
+@@ -400,8 +374,6 @@ static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id)
+                        mcntrl_drmie);
+               iowrite32(ctl, I2C_REG_CTL(alg_data));
+-              /* Stop timer, to prevent timeout. */
+-              del_timer_sync(&alg_data->mif.timer);
+               complete(&alg_data->mif.complete);
+       } else if (stat & mstatus_nai) {
+               /* Slave did not acknowledge, generate a STOP */
+@@ -419,8 +391,6 @@ static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id)
+               /* Our return value. */
+               alg_data->mif.ret = -EIO;
+-              /* Stop timer, to prevent timeout. */
+-              del_timer_sync(&alg_data->mif.timer);
+               complete(&alg_data->mif.complete);
+       } else {
+               /*
+@@ -453,9 +423,8 @@ static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id)
+       return IRQ_HANDLED;
+ }
+-static void i2c_pnx_timeout(struct timer_list *t)
++static void i2c_pnx_timeout(struct i2c_pnx_algo_data *alg_data)
+ {
+-      struct i2c_pnx_algo_data *alg_data = from_timer(alg_data, t, mif.timer);
+       u32 ctl;
+       dev_err(&alg_data->adapter.dev,
+@@ -472,7 +441,6 @@ static void i2c_pnx_timeout(struct timer_list *t)
+       iowrite32(ctl, I2C_REG_CTL(alg_data));
+       wait_reset(alg_data);
+       alg_data->mif.ret = -EIO;
+-      complete(&alg_data->mif.complete);
+ }
+ static inline void bus_reset_if_active(struct i2c_pnx_algo_data *alg_data)
+@@ -514,6 +482,7 @@ i2c_pnx_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+       struct i2c_msg *pmsg;
+       int rc = 0, completed = 0, i;
+       struct i2c_pnx_algo_data *alg_data = adap->algo_data;
++      unsigned long time_left;
+       u32 stat;
+       dev_dbg(&alg_data->adapter.dev,
+@@ -548,7 +517,6 @@ i2c_pnx_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+               dev_dbg(&alg_data->adapter.dev, "%s(): mode %d, %d bytes\n",
+                       __func__, alg_data->mif.mode, alg_data->mif.len);
+-              i2c_pnx_arm_timer(alg_data);
+               /* initialize the completion var */
+               init_completion(&alg_data->mif.complete);
+@@ -564,7 +532,10 @@ i2c_pnx_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+                       break;
+               /* Wait for completion */
+-              wait_for_completion(&alg_data->mif.complete);
++              time_left = wait_for_completion_timeout(&alg_data->mif.complete,
++                                                      alg_data->timeout);
++              if (time_left == 0)
++                      i2c_pnx_timeout(alg_data);
+               if (!(rc = alg_data->mif.ret))
+                       completed++;
+@@ -657,7 +628,10 @@ static int i2c_pnx_probe(struct platform_device *pdev)
+       alg_data->adapter.algo_data = alg_data;
+       alg_data->adapter.nr = pdev->id;
+-      alg_data->timeout = I2C_PNX_TIMEOUT_DEFAULT;
++      alg_data->timeout = msecs_to_jiffies(I2C_PNX_TIMEOUT_DEFAULT);
++      if (alg_data->timeout <= 1)
++              alg_data->timeout = 2;
++
+ #ifdef CONFIG_OF
+       alg_data->adapter.dev.of_node = of_node_get(pdev->dev.of_node);
+       if (pdev->dev.of_node) {
+@@ -677,8 +651,6 @@ static int i2c_pnx_probe(struct platform_device *pdev)
+       if (IS_ERR(alg_data->clk))
+               return PTR_ERR(alg_data->clk);
+-      timer_setup(&alg_data->mif.timer, i2c_pnx_timeout, 0);
+-
+       snprintf(alg_data->adapter.name, sizeof(alg_data->adapter.name),
+                "%s", pdev->name);
+-- 
+2.43.0
+
diff --git a/queue-5.10/kbuild-fix-short-log-for-as-in-link-vmlinux.sh.patch b/queue-5.10/kbuild-fix-short-log-for-as-in-link-vmlinux.sh.patch
new file mode 100644 (file)
index 0000000..0b51c5f
--- /dev/null
@@ -0,0 +1,59 @@
+From 0d00d4087c8238fc30dfc8b0a301d36d6e5fc919 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 21:42:11 +0900
+Subject: kbuild: fix short log for AS in link-vmlinux.sh
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ Upstream commit 3430f65d6130ccbc86f0ff45642eeb9e2032a600 ]
+
+In convention, short logs print the output file, not the input file.
+
+Let's change the suffix for 'AS' since it assembles *.S into *.o.
+
+[Before]
+
+  LD      .tmp_vmlinux.kallsyms1
+  NM      .tmp_vmlinux.kallsyms1.syms
+  KSYMS   .tmp_vmlinux.kallsyms1.S
+  AS      .tmp_vmlinux.kallsyms1.S
+  LD      .tmp_vmlinux.kallsyms2
+  NM      .tmp_vmlinux.kallsyms2.syms
+  KSYMS   .tmp_vmlinux.kallsyms2.S
+  AS      .tmp_vmlinux.kallsyms2.S
+  LD      vmlinux
+
+[After]
+
+  LD      .tmp_vmlinux.kallsyms1
+  NM      .tmp_vmlinux.kallsyms1.syms
+  KSYMS   .tmp_vmlinux.kallsyms1.S
+  AS      .tmp_vmlinux.kallsyms1.o
+  LD      .tmp_vmlinux.kallsyms2
+  NM      .tmp_vmlinux.kallsyms2.syms
+  KSYMS   .tmp_vmlinux.kallsyms2.S
+  AS      .tmp_vmlinux.kallsyms2.o
+  LD      vmlinux
+
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/link-vmlinux.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
+index 3a1ffd84eac28..bf534a323fddc 100755
+--- a/scripts/link-vmlinux.sh
++++ b/scripts/link-vmlinux.sh
+@@ -213,7 +213,7 @@ kallsyms_step()
+       vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o}
+       kallsyms ${kallsyms_vmlinux} ${kallsyms_S}
+-      info AS ${kallsyms_S}
++      info AS ${kallsymso}
+       ${CC} ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS} \
+             ${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \
+             -c -o ${kallsymso} ${kallsyms_S}
+-- 
+2.43.0
+
diff --git a/queue-5.10/nvme-adjust-multiples-of-nvme_ctrl_page_size-in-offs.patch b/queue-5.10/nvme-adjust-multiples-of-nvme_ctrl_page_size-in-offs.patch
new file mode 100644 (file)
index 0000000..ecd1a7e
--- /dev/null
@@ -0,0 +1,45 @@
+From 57fbfb680d8a5e3ef1bcec1c28b13871f7f50069 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 23 May 2024 17:01:49 +0530
+Subject: nvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset
+
+From: Kundan Kumar <kundan.kumar@samsung.com>
+
+[ Upstream commit 1bd293fcf3af84674e82ed022c049491f3768840 ]
+
+bio_vec start offset may be relatively large particularly when large
+folio gets added to the bio. A bigger offset will result in avoiding the
+single-segment mapping optimization and end up using expensive
+mempool_alloc further.
+
+Rather than using absolute value, adjust bv_offset by
+NVME_CTRL_PAGE_SIZE while checking if segment can be fitted into one/two
+PRP entries.
+
+Suggested-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Kundan Kumar <kundan.kumar@samsung.com>
+Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/pci.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index 5242feda5471a..a7131f4752e28 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -844,7 +844,8 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
+               struct bio_vec bv = req_bvec(req);
+               if (!is_pci_p2pdma_page(bv.bv_page)) {
+-                      if (bv.bv_offset + bv.bv_len <= NVME_CTRL_PAGE_SIZE * 2)
++                      if ((bv.bv_offset & (NVME_CTRL_PAGE_SIZE - 1)) +
++                           bv.bv_len <= NVME_CTRL_PAGE_SIZE * 2)
+                               return nvme_setup_prp_simple(dev, req,
+                                                            &cmnd->rw, &bv);
+-- 
+2.43.0
+
diff --git a/queue-5.10/nvme-multipath-find-numa-path-only-for-online-numa-n.patch b/queue-5.10/nvme-multipath-find-numa-path-only-for-online-numa-n.patch
new file mode 100644 (file)
index 0000000..b987012
--- /dev/null
@@ -0,0 +1,54 @@
+From a9b5b6bf7f147018ad147bb40a7066e6b71dd289 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 16 May 2024 17:43:51 +0530
+Subject: nvme-multipath: find NUMA path only for online numa-node
+
+From: Nilay Shroff <nilay@linux.ibm.com>
+
+[ Upstream commit d3a043733f25d743f3aa617c7f82dbcb5ee2211a ]
+
+In current native multipath design when a shared namespace is created,
+we loop through each possible numa-node, calculate the NUMA distance of
+that node from each nvme controller and then cache the optimal IO path
+for future reference while sending IO. The issue with this design is that
+we may refer to the NUMA distance table for an offline node which may not
+be populated at the time and so we may inadvertently end up finding and
+caching a non-optimal path for IO. Then latter when the corresponding
+numa-node becomes online and hence the NUMA distance table entry for that
+node is created, ideally we should re-calculate the multipath node distance
+for the newly added node however that doesn't happen unless we rescan/reset
+the controller. So essentially, we may keep using non-optimal IO path for a
+node which is made online after namespace is created.
+This patch helps fix this issue ensuring that when a shared namespace is
+created, we calculate the multipath node distance for each online numa-node
+instead of each possible numa-node. Then latter when a node becomes online
+and we receive any IO on that newly added node, we would calculate the
+multipath node distance for newly added node but this time NUMA distance
+table would have been already populated for newly added node. Hence we
+would be able to correctly calculate the multipath node distance and choose
+the optimal path for the IO.
+
+Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/multipath.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
+index 9f59f93b70e26..54ca60db65473 100644
+--- a/drivers/nvme/host/multipath.c
++++ b/drivers/nvme/host/multipath.c
+@@ -420,7 +420,7 @@ static void nvme_mpath_set_live(struct nvme_ns *ns)
+               int node, srcu_idx;
+               srcu_idx = srcu_read_lock(&head->srcu);
+-              for_each_node(node)
++              for_each_online_node(node)
+                       __nvme_find_path(head, node);
+               srcu_read_unlock(&head->srcu, srcu_idx);
+       }
+-- 
+2.43.0
+
diff --git a/queue-5.10/nvmet-fix-a-possible-leak-when-destroy-a-ctrl-during.patch b/queue-5.10/nvmet-fix-a-possible-leak-when-destroy-a-ctrl-during.patch
new file mode 100644 (file)
index 0000000..5b5a960
--- /dev/null
@@ -0,0 +1,63 @@
+From a1cf8bad2e54cdea63f45d7b2a5a4a82ec43f4a7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 27 May 2024 22:38:52 +0300
+Subject: nvmet: fix a possible leak when destroy a ctrl during qp
+ establishment
+
+From: Sagi Grimberg <sagi@grimberg.me>
+
+[ Upstream commit c758b77d4a0a0ed3a1292b3fd7a2aeccd1a169a4 ]
+
+In nvmet_sq_destroy we capture sq->ctrl early and if it is non-NULL we
+know that a ctrl was allocated (in the admin connect request handler)
+and we need to release pending AERs, clear ctrl->sqs and sq->ctrl
+(for nvme-loop primarily), and drop the final reference on the ctrl.
+
+However, a small window is possible where nvmet_sq_destroy starts (as
+a result of the client giving up and disconnecting) concurrently with
+the nvme admin connect cmd (which may be in an early stage). But *before*
+kill_and_confirm of sq->ref (i.e. the admin connect managed to get an sq
+live reference). In this case, sq->ctrl was allocated however after it was
+captured in a local variable in nvmet_sq_destroy.
+This prevented the final reference drop on the ctrl.
+
+Solve this by re-capturing the sq->ctrl after all inflight request has
+completed, where for sure sq->ctrl reference is final, and move forward
+based on that.
+
+This issue was observed in an environment with many hosts connecting
+multiple ctrls simoutanuosly, creating a delay in allocating a ctrl
+leading up to this race window.
+
+Reported-by: Alex Turin <alex@vastdata.com>
+Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/target/core.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
+index 59109eb8e8e46..a04bb02c1251b 100644
+--- a/drivers/nvme/target/core.c
++++ b/drivers/nvme/target/core.c
+@@ -795,6 +795,15 @@ void nvmet_sq_destroy(struct nvmet_sq *sq)
+       wait_for_completion(&sq->free_done);
+       percpu_ref_exit(&sq->ref);
++      /*
++       * we must reference the ctrl again after waiting for inflight IO
++       * to complete. Because admin connect may have sneaked in after we
++       * store sq->ctrl locally, but before we killed the percpu_ref. the
++       * admin connect allocates and assigns sq->ctrl, which now needs a
++       * final ref put, as this ctrl is going away.
++       */
++      ctrl = sq->ctrl;
++
+       if (ctrl) {
+               /*
+                * The teardown flow may take some time, and the host may not
+-- 
+2.43.0
+
diff --git a/queue-5.10/platform-x86-touchscreen_dmi-add-info-for-globalspac.patch b/queue-5.10/platform-x86-touchscreen_dmi-add-info-for-globalspac.patch
new file mode 100644 (file)
index 0000000..f0050cc
--- /dev/null
@@ -0,0 +1,69 @@
+From ede0483c7b59f1e2dfa7c674f2f6a47db8117fea Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 27 May 2024 11:14:46 +0200
+Subject: platform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW
+ 11.6" tablet
+
+From: hmtheboy154 <buingoc67@gmail.com>
+
+[ Upstream commit 7c8639aa41343fd7b3dbe09baf6b0791fcc407a1 ]
+
+This is a tablet created by GlobalSpace Technologies Limited
+which uses an Intel Atom x5-Z8300, 4GB of RAM & 64GB of storage.
+
+Link: https://web.archive.org/web/20171102141952/http://globalspace.in/11.6-device.html
+Signed-off-by: hmtheboy154 <buingoc67@gmail.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Link: https://lore.kernel.org/r/20240527091447.248849-2-hdegoede@redhat.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/touchscreen_dmi.c | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c
+index fbaa618594628..8cb07f0166c26 100644
+--- a/drivers/platform/x86/touchscreen_dmi.c
++++ b/drivers/platform/x86/touchscreen_dmi.c
+@@ -857,6 +857,22 @@ static const struct ts_dmi_data schneider_sct101ctm_data = {
+       .properties     = schneider_sct101ctm_props,
+ };
++static const struct property_entry globalspace_solt_ivw116_props[] = {
++      PROPERTY_ENTRY_U32("touchscreen-min-x", 7),
++      PROPERTY_ENTRY_U32("touchscreen-min-y", 22),
++      PROPERTY_ENTRY_U32("touchscreen-size-x", 1723),
++      PROPERTY_ENTRY_U32("touchscreen-size-y", 1077),
++      PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-globalspace-solt-ivw116.fw"),
++      PROPERTY_ENTRY_U32("silead,max-fingers", 10),
++      PROPERTY_ENTRY_BOOL("silead,home-button"),
++      { }
++};
++
++static const struct ts_dmi_data globalspace_solt_ivw116_data = {
++      .acpi_name      = "MSSL1680:00",
++      .properties     = globalspace_solt_ivw116_props,
++};
++
+ static const struct property_entry techbite_arc_11_6_props[] = {
+       PROPERTY_ENTRY_U32("touchscreen-min-x", 5),
+       PROPERTY_ENTRY_U32("touchscreen-min-y", 7),
+@@ -1490,6 +1506,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "SCT101CTM"),
+               },
+       },
++      {
++              /* GlobalSpace SoLT IVW 11.6" */
++              .driver_data = (void *)&globalspace_solt_ivw116_data,
++              .matches = {
++                      DMI_MATCH(DMI_SYS_VENDOR, "Globalspace Tech Pvt Ltd"),
++                      DMI_MATCH(DMI_PRODUCT_NAME, "SolTIVW"),
++                      DMI_MATCH(DMI_PRODUCT_SKU, "PN20170413488"),
++              },
++      },
+       {
+               /* Techbite Arc 11.6 */
+               .driver_data = (void *)&techbite_arc_11_6_data,
+-- 
+2.43.0
+
diff --git a/queue-5.10/platform-x86-touchscreen_dmi-add-info-for-the-ezpad-.patch b/queue-5.10/platform-x86-touchscreen_dmi-add-info-for-the-ezpad-.patch
new file mode 100644 (file)
index 0000000..0a3d163
--- /dev/null
@@ -0,0 +1,46 @@
+From 7dee2304cd01c1543e5017dcf0191a3969a3ff2c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 27 May 2024 11:14:47 +0200
+Subject: platform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro
+
+From: hmtheboy154 <buingoc67@gmail.com>
+
+[ Upstream commit 3050052613790e75b5e4a8536930426b0a8b0774 ]
+
+The "EZpad 6s Pro" uses the same touchscreen as the "EZpad 6 Pro B",
+unlike the "Ezpad 6 Pro" which has its own touchscreen.
+
+Signed-off-by: hmtheboy154 <buingoc67@gmail.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Link: https://lore.kernel.org/r/20240527091447.248849-3-hdegoede@redhat.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/touchscreen_dmi.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c
+index 8cb07f0166c26..dce2d26b1d0fc 100644
+--- a/drivers/platform/x86/touchscreen_dmi.c
++++ b/drivers/platform/x86/touchscreen_dmi.c
+@@ -1277,6 +1277,17 @@ const struct dmi_system_id touchscreen_dmi_table[] = {
+                       DMI_MATCH(DMI_BIOS_DATE, "04/24/2018"),
+               },
+       },
++      {
++              /* Jumper EZpad 6s Pro */
++              .driver_data = (void *)&jumper_ezpad_6_pro_b_data,
++              .matches = {
++                      DMI_MATCH(DMI_SYS_VENDOR, "Jumper"),
++                      DMI_MATCH(DMI_PRODUCT_NAME, "Ezpad"),
++                      /* Above matches are too generic, add bios match */
++                      DMI_MATCH(DMI_BIOS_VERSION, "E.WSA116_8.E1.042.bin"),
++                      DMI_MATCH(DMI_BIOS_DATE, "01/08/2020"),
++              },
++      },
+       {
+               /* Jumper EZpad 6 m4 */
+               .driver_data = (void *)&jumper_ezpad_6_m4_data,
+-- 
+2.43.0
+
index e81d1e1b53cde48339c1fad2d34435ff5df2cbaf..1e1dfc7f8441a7e9aa621c70ee3b44652b4ffb7d 100644 (file)
@@ -49,3 +49,11 @@ bnx2x-fix-multiple-ubsan-array-index-out-of-bounds.patch
 bpf-sockmap-fix-sk-sk_forward_alloc-warn_on-in-sk_stream_kill_queues.patch
 ima-avoid-blocking-in-rcu-read-side-critical-section.patch
 media-dw2102-fix-a-potential-buffer-overflow.patch
+i2c-pnx-fix-potential-deadlock-warning-from-del_time.patch
+alsa-hda-realtek-enable-headset-mic-of-jp-ik-leap-w5.patch
+nvme-multipath-find-numa-path-only-for-online-numa-n.patch
+nvme-adjust-multiples-of-nvme_ctrl_page_size-in-offs.patch
+platform-x86-touchscreen_dmi-add-info-for-globalspac.patch
+platform-x86-touchscreen_dmi-add-info-for-the-ezpad-.patch
+nvmet-fix-a-possible-leak-when-destroy-a-ctrl-during.patch
+kbuild-fix-short-log-for-as-in-link-vmlinux.sh.patch