]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.10
authorSasha Levin <sashal@kernel.org>
Sun, 3 Nov 2024 00:30:52 +0000 (20:30 -0400)
committerSasha Levin <sashal@kernel.org>
Sun, 3 Nov 2024 00:30:52 +0000 (20:30 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.10/misc-sgi-gru-don-t-disable-preemption-in-gru-driver.patch [new file with mode: 0644]
queue-5.10/net-amd-mvme147-fix-probe-banner-message.patch [new file with mode: 0644]
queue-5.10/nfs-remove-revoked-delegation-from-server-s-delegati.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/misc-sgi-gru-don-t-disable-preemption-in-gru-driver.patch b/queue-5.10/misc-sgi-gru-don-t-disable-preemption-in-gru-driver.patch
new file mode 100644 (file)
index 0000000..ec3d04a
--- /dev/null
@@ -0,0 +1,96 @@
+From cfd122eaff84109d35b323fadbecb3aeacc483cd Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 19 Sep 2024 07:34:50 -0500
+Subject: misc: sgi-gru: Don't disable preemption in GRU driver
+
+From: Dimitri Sivanich <sivanich@hpe.com>
+
+[ Upstream commit b983b271662bd6104d429b0fd97af3333ba760bf ]
+
+Disabling preemption in the GRU driver is unnecessary, and clashes with
+sleeping locks in several code paths.  Remove preempt_disable and
+preempt_enable from the GRU driver.
+
+Signed-off-by: Dimitri Sivanich <sivanich@hpe.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/misc/sgi-gru/grukservices.c | 2 --
+ drivers/misc/sgi-gru/grumain.c      | 4 ----
+ drivers/misc/sgi-gru/grutlbpurge.c  | 2 --
+ 3 files changed, 8 deletions(-)
+
+diff --git a/drivers/misc/sgi-gru/grukservices.c b/drivers/misc/sgi-gru/grukservices.c
+index 0ea923fe6371b..e2bdba4742930 100644
+--- a/drivers/misc/sgi-gru/grukservices.c
++++ b/drivers/misc/sgi-gru/grukservices.c
+@@ -258,7 +258,6 @@ static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr)
+       int lcpu;
+       BUG_ON(dsr_bytes > GRU_NUM_KERNEL_DSR_BYTES);
+-      preempt_disable();
+       bs = gru_lock_kernel_context(-1);
+       lcpu = uv_blade_processor_id();
+       *cb = bs->kernel_cb + lcpu * GRU_HANDLE_STRIDE;
+@@ -272,7 +271,6 @@ static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr)
+ static void gru_free_cpu_resources(void *cb, void *dsr)
+ {
+       gru_unlock_kernel_context(uv_numa_blade_id());
+-      preempt_enable();
+ }
+ /*
+diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c
+index e2325e3d077ea..4f7a0f8472556 100644
+--- a/drivers/misc/sgi-gru/grumain.c
++++ b/drivers/misc/sgi-gru/grumain.c
+@@ -941,10 +941,8 @@ vm_fault_t gru_fault(struct vm_fault *vmf)
+ again:
+       mutex_lock(&gts->ts_ctxlock);
+-      preempt_disable();
+       if (gru_check_context_placement(gts)) {
+-              preempt_enable();
+               mutex_unlock(&gts->ts_ctxlock);
+               gru_unload_context(gts, 1);
+               return VM_FAULT_NOPAGE;
+@@ -953,7 +951,6 @@ vm_fault_t gru_fault(struct vm_fault *vmf)
+       if (!gts->ts_gru) {
+               STAT(load_user_context);
+               if (!gru_assign_gru_context(gts)) {
+-                      preempt_enable();
+                       mutex_unlock(&gts->ts_ctxlock);
+                       set_current_state(TASK_INTERRUPTIBLE);
+                       schedule_timeout(GRU_ASSIGN_DELAY);  /* true hack ZZZ */
+@@ -969,7 +966,6 @@ vm_fault_t gru_fault(struct vm_fault *vmf)
+                               vma->vm_page_prot);
+       }
+-      preempt_enable();
+       mutex_unlock(&gts->ts_ctxlock);
+       return VM_FAULT_NOPAGE;
+diff --git a/drivers/misc/sgi-gru/grutlbpurge.c b/drivers/misc/sgi-gru/grutlbpurge.c
+index 10921cd2608df..1107dd3e2e9fa 100644
+--- a/drivers/misc/sgi-gru/grutlbpurge.c
++++ b/drivers/misc/sgi-gru/grutlbpurge.c
+@@ -65,7 +65,6 @@ static struct gru_tlb_global_handle *get_lock_tgh_handle(struct gru_state
+       struct gru_tlb_global_handle *tgh;
+       int n;
+-      preempt_disable();
+       if (uv_numa_blade_id() == gru->gs_blade_id)
+               n = get_on_blade_tgh(gru);
+       else
+@@ -79,7 +78,6 @@ static struct gru_tlb_global_handle *get_lock_tgh_handle(struct gru_state
+ static void get_unlock_tgh_handle(struct gru_tlb_global_handle *tgh)
+ {
+       unlock_tgh_handle(tgh);
+-      preempt_enable();
+ }
+ /*
+-- 
+2.43.0
+
diff --git a/queue-5.10/net-amd-mvme147-fix-probe-banner-message.patch b/queue-5.10/net-amd-mvme147-fix-probe-banner-message.patch
new file mode 100644 (file)
index 0000000..20c3e80
--- /dev/null
@@ -0,0 +1,53 @@
+From d330bc724ee32ef16625237df5e4b51a97a50fa4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 7 Oct 2024 19:43:17 +0900
+Subject: net: amd: mvme147: Fix probe banner message
+
+From: Daniel Palmer <daniel@0x0f.com>
+
+[ Upstream commit 82c5b53140faf89c31ea2b3a0985a2f291694169 ]
+
+Currently this driver prints this line with what looks like
+a rogue format specifier when the device is probed:
+[    2.840000] eth%d: MVME147 at 0xfffe1800, irq 12, Hardware Address xx:xx:xx:xx:xx:xx
+
+Change the printk() for netdev_info() and move it after the
+registration has completed so it prints out the name of the
+interface properly.
+
+Signed-off-by: Daniel Palmer <daniel@0x0f.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/amd/mvme147.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/ethernet/amd/mvme147.c b/drivers/net/ethernet/amd/mvme147.c
+index 3f2e4cdd0b83e..133fe0f1166b0 100644
+--- a/drivers/net/ethernet/amd/mvme147.c
++++ b/drivers/net/ethernet/amd/mvme147.c
+@@ -106,10 +106,6 @@ struct net_device * __init mvme147lance_probe(int unit)
+       address = address >> 8;
+       dev->dev_addr[3] = address&0xff;
+-      printk("%s: MVME147 at 0x%08lx, irq %d, Hardware Address %pM\n",
+-             dev->name, dev->base_addr, MVME147_LANCE_IRQ,
+-             dev->dev_addr);
+-
+       lp = netdev_priv(dev);
+       lp->ram = __get_dma_pages(GFP_ATOMIC, 3);       /* 32K */
+       if (!lp->ram) {
+@@ -139,6 +135,9 @@ struct net_device * __init mvme147lance_probe(int unit)
+               return ERR_PTR(err);
+       }
++      netdev_info(dev, "MVME147 at 0x%08lx, irq %d, Hardware Address %pM\n",
++                  dev->base_addr, MVME147_LANCE_IRQ, dev->dev_addr);
++
+       return dev;
+ }
+-- 
+2.43.0
+
diff --git a/queue-5.10/nfs-remove-revoked-delegation-from-server-s-delegati.patch b/queue-5.10/nfs-remove-revoked-delegation-from-server-s-delegati.patch
new file mode 100644 (file)
index 0000000..eae93a6
--- /dev/null
@@ -0,0 +1,56 @@
+From f6bd52d9020ef7347bb6fac969d13efa1d93fd61 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 8 Oct 2024 15:58:07 -0700
+Subject: NFS: remove revoked delegation from server's delegation list
+
+From: Dai Ngo <dai.ngo@oracle.com>
+
+[ Upstream commit 7ef60108069b7e3cc66432304e1dd197d5c0a9b5 ]
+
+After the delegation is returned to the NFS server remove it
+from the server's delegations list to reduce the time it takes
+to scan this list.
+
+Network trace captured while running the below script shows the
+time taken to service the CB_RECALL increases gradually due to
+the overhead of traversing the delegation list in
+nfs_delegation_find_inode_server.
+
+The NFS server in this test is a Solaris server which issues
+CB_RECALL when receiving the all-zero stateid in the SETATTR.
+
+mount=/mnt/data
+for i in $(seq 1 20)
+do
+   echo $i
+   mkdir $mount/testtarfile$i
+   time  tar -C $mount/testtarfile$i -xf 5000_files.tar
+done
+
+Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
+Reviewed-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/delegation.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
+index c15188d0b6b33..02d9af026ad15 100644
+--- a/fs/nfs/delegation.c
++++ b/fs/nfs/delegation.c
+@@ -960,6 +960,11 @@ void nfs_delegation_mark_returned(struct inode *inode,
+       }
+       nfs_mark_delegation_revoked(delegation);
++      clear_bit(NFS_DELEGATION_RETURNING, &delegation->flags);
++      spin_unlock(&delegation->lock);
++      if (nfs_detach_delegation(NFS_I(inode), delegation, NFS_SERVER(inode)))
++              nfs_put_delegation(delegation);
++      goto out_rcu_unlock;
+ out_clear_returning:
+       clear_bit(NFS_DELEGATION_RETURNING, &delegation->flags);
+-- 
+2.43.0
+
index a3a75224ef7a62442323a198c915e1ce2b1c1c9a..8740eb89ef9da838151a94269022e1ec4e39a135 100644 (file)
@@ -80,3 +80,6 @@ compiler-gcc-be-consistent-with-underscores-use-for-.patch
 compiler-gcc-remove-attribute-support-check-for-__no.patch
 kasan-fix-software-tag-based-kasan-with-gcc.patch
 firmware-arm_sdei-fix-the-input-parameter-of-cpuhp_r.patch
+net-amd-mvme147-fix-probe-banner-message.patch
+nfs-remove-revoked-delegation-from-server-s-delegati.patch
+misc-sgi-gru-don-t-disable-preemption-in-gru-driver.patch