]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 6.1
authorSasha Levin <sashal@kernel.org>
Mon, 2 Jun 2025 13:05:54 +0000 (09:05 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 2 Jun 2025 13:05:54 +0000 (09:05 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-6.1/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch [new file with mode: 0644]
queue-6.1/net-ethernet-ti-am65-cpsw-lower-random-mac-address-e.patch [new file with mode: 0644]
queue-6.1/nfs-avoid-flushing-data-while-holding-directory-lock.patch [new file with mode: 0644]
queue-6.1/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch [new file with mode: 0644]
queue-6.1/nvme-pci-add-nvme_quirk_no_deepest_ps-quirk-for-soli.patch [new file with mode: 0644]
queue-6.1/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch [new file with mode: 0644]
queue-6.1/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch [new file with mode: 0644]
queue-6.1/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch [new file with mode: 0644]
queue-6.1/series
queue-6.1/spi-spi-sun4i-fix-early-activation.patch [new file with mode: 0644]
queue-6.1/um-let-make-clean-properly-clean-underlying-subarch-.patch [new file with mode: 0644]

diff --git a/queue-6.1/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch b/queue-6.1/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch
new file mode 100644 (file)
index 0000000..808b591
--- /dev/null
@@ -0,0 +1,50 @@
+From 0e5392b399e88c9e18507534b99c82cdb9ab4603 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 9 Apr 2025 00:04:28 -0600
+Subject: HID: quirks: Add ADATA XPG alpha wireless mouse support
+
+From: Milton Barrera <miltonjosue2001@gmail.com>
+
+[ Upstream commit fa9fdeea1b7d6440c22efa6d59a769eae8bc89f1 ]
+
+This patch adds HID_QUIRK_ALWAYS_POLL for the ADATA XPG wireless gaming mouse (USB ID 125f:7505) and its USB dongle (USB ID 125f:7506). Without this quirk, the device does not generate input events properly.
+
+Signed-off-by: Milton Barrera <miltonjosue2001@gmail.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/hid/hid-ids.h    | 4 ++++
+ drivers/hid/hid-quirks.c | 2 ++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
+index 4187d890bcc1a..e078d2ac92c87 100644
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -41,6 +41,10 @@
+ #define USB_VENDOR_ID_ACTIONSTAR      0x2101
+ #define USB_DEVICE_ID_ACTIONSTAR_1011 0x1011
++#define USB_VENDOR_ID_ADATA_XPG 0x125f
++#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE 0x7505
++#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE 0x7506
++
+ #define USB_VENDOR_ID_ADS_TECH                0x06e1
+ #define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X   0xa155
+diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
+index 875c44e5cf6c2..d8c5c7d451efd 100644
+--- a/drivers/hid/hid-quirks.c
++++ b/drivers/hid/hid-quirks.c
+@@ -27,6 +27,8 @@
+ static const struct hid_device_id hid_quirks[] = {
+       { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD },
+       { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD },
++      { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE), HID_QUIRK_ALWAYS_POLL },
++      { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE), HID_QUIRK_ALWAYS_POLL },
+       { HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL },
+       { HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET },
+       { HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS },
+-- 
+2.39.5
+
diff --git a/queue-6.1/net-ethernet-ti-am65-cpsw-lower-random-mac-address-e.patch b/queue-6.1/net-ethernet-ti-am65-cpsw-lower-random-mac-address-e.patch
new file mode 100644 (file)
index 0000000..64a1f3c
--- /dev/null
@@ -0,0 +1,41 @@
+From 9a6f98f97b7890e5ba557147550d24f6c6b224c6 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 16 May 2025 07:26:55 -0500
+Subject: net: ethernet: ti: am65-cpsw: Lower random mac address error print to
+ info
+
+From: Nishanth Menon <nm@ti.com>
+
+[ Upstream commit 50980d8da71a0c2e045e85bba93c0099ab73a209 ]
+
+Using random mac address is not an error since the driver continues to
+function, it should be informative that the system has not assigned
+a MAC address. This is inline with other drivers such as ax88796c,
+dm9051 etc. Drop the error level to info level.
+
+Signed-off-by: Nishanth Menon <nm@ti.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Reviewed-by: Roger Quadros <rogerq@kernel.org>
+Link: https://patch.msgid.link/20250516122655.442808-1-nm@ti.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
+index 32828d4ac64ce..a0a9e4e13e77b 100644
+--- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
++++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
+@@ -1918,7 +1918,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
+                                                       port->slave.mac_addr);
+                       if (!is_valid_ether_addr(port->slave.mac_addr)) {
+                               eth_random_addr(port->slave.mac_addr);
+-                              dev_err(dev, "Use random MAC address\n");
++                              dev_info(dev, "Use random MAC address\n");
+                       }
+               }
+       }
+-- 
+2.39.5
+
diff --git a/queue-6.1/nfs-avoid-flushing-data-while-holding-directory-lock.patch b/queue-6.1/nfs-avoid-flushing-data-while-holding-directory-lock.patch
new file mode 100644 (file)
index 0000000..988c72f
--- /dev/null
@@ -0,0 +1,110 @@
+From 90d04957d2e4483ab0308587bebaa8fe6073907c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 27 Apr 2025 18:21:06 -0400
+Subject: NFS: Avoid flushing data while holding directory locks in
+ nfs_rename()
+
+From: Trond Myklebust <trond.myklebust@hammerspace.com>
+
+[ Upstream commit dcd21b609d4abc7303f8683bce4f35d78d7d6830 ]
+
+The Linux client assumes that all filehandles are non-volatile for
+renames within the same directory (otherwise sillyrename cannot work).
+However, the existence of the Linux 'subtree_check' export option has
+meant that nfs_rename() has always assumed it needs to flush writes
+before attempting to rename.
+
+Since NFSv4 does allow the client to query whether or not the server
+exhibits this behaviour, and since knfsd does actually set the
+appropriate flag when 'subtree_check' is enabled on an export, it
+should be OK to optimise away the write flushing behaviour in the cases
+where it is clearly not needed.
+
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Reviewed-by: Jeff Layton <jlayton@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/client.c           |  2 ++
+ fs/nfs/dir.c              | 15 ++++++++++++++-
+ include/linux/nfs_fs_sb.h | 12 +++++++++---
+ 3 files changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/fs/nfs/client.c b/fs/nfs/client.c
+index a8930e6c417fc..de4ad41b14e2a 100644
+--- a/fs/nfs/client.c
++++ b/fs/nfs/client.c
+@@ -1052,6 +1052,8 @@ struct nfs_server *nfs_create_server(struct fs_context *fc)
+               if (server->namelen == 0 || server->namelen > NFS2_MAXNAMLEN)
+                       server->namelen = NFS2_MAXNAMLEN;
+       }
++      /* Linux 'subtree_check' borkenness mandates this setting */
++      server->fh_expire_type = NFS_FH_VOL_RENAME;
+       if (!(fattr->valid & NFS_ATTR_FATTR)) {
+               error = ctx->nfs_mod->rpc_ops->getattr(server, ctx->mntfh,
+diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
+index 70660ff248b79..1876978107ca1 100644
+--- a/fs/nfs/dir.c
++++ b/fs/nfs/dir.c
+@@ -2632,6 +2632,18 @@ nfs_unblock_rename(struct rpc_task *task, struct nfs_renamedata *data)
+       unblock_revalidate(new_dentry);
+ }
++static bool nfs_rename_is_unsafe_cross_dir(struct dentry *old_dentry,
++                                         struct dentry *new_dentry)
++{
++      struct nfs_server *server = NFS_SB(old_dentry->d_sb);
++
++      if (old_dentry->d_parent != new_dentry->d_parent)
++              return false;
++      if (server->fh_expire_type & NFS_FH_RENAME_UNSAFE)
++              return !(server->fh_expire_type & NFS_FH_NOEXPIRE_WITH_OPEN);
++      return true;
++}
++
+ /*
+  * RENAME
+  * FIXME: Some nfsds, like the Linux user space nfsd, may generate a
+@@ -2719,7 +2731,8 @@ int nfs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
+       }
+-      if (S_ISREG(old_inode->i_mode))
++      if (S_ISREG(old_inode->i_mode) &&
++          nfs_rename_is_unsafe_cross_dir(old_dentry, new_dentry))
+               nfs_sync_inode(old_inode);
+       task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry,
+                               must_unblock ? nfs_unblock_rename : NULL);
+diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
+index 9ea9f9087a712..a9671f9300848 100644
+--- a/include/linux/nfs_fs_sb.h
++++ b/include/linux/nfs_fs_sb.h
+@@ -196,6 +196,15 @@ struct nfs_server {
+       char                    *fscache_uniq;  /* Uniquifier (or NULL) */
+ #endif
++      /* The following #defines numerically match the NFSv4 equivalents */
++#define NFS_FH_NOEXPIRE_WITH_OPEN (0x1)
++#define NFS_FH_VOLATILE_ANY (0x2)
++#define NFS_FH_VOL_MIGRATION (0x4)
++#define NFS_FH_VOL_RENAME (0x8)
++#define NFS_FH_RENAME_UNSAFE (NFS_FH_VOLATILE_ANY | NFS_FH_VOL_RENAME)
++      u32                     fh_expire_type; /* V4 bitmask representing file
++                                                 handle volatility type for
++                                                 this filesystem */
+       u32                     pnfs_blksize;   /* layout_blksize attr */
+ #if IS_ENABLED(CONFIG_NFS_V4)
+       u32                     attr_bitmask[3];/* V4 bitmask representing the set
+@@ -219,9 +228,6 @@ struct nfs_server {
+       u32                     acl_bitmask;    /* V4 bitmask representing the ACEs
+                                                  that are supported on this
+                                                  filesystem */
+-      u32                     fh_expire_type; /* V4 bitmask representing file
+-                                                 handle volatility type for
+-                                                 this filesystem */
+       struct pnfs_layoutdriver_type  *pnfs_curr_ld; /* Active layout driver */
+       struct rpc_wait_queue   roc_rpcwaitq;
+       void                    *pnfs_ld_data;  /* per mount point data */
+-- 
+2.39.5
+
diff --git a/queue-6.1/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch b/queue-6.1/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch
new file mode 100644 (file)
index 0000000..9299a4a
--- /dev/null
@@ -0,0 +1,166 @@
+From c0c8a027a77dbc9e40cba5459d429cf2f09b73b7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 10 Apr 2025 16:42:03 -0400
+Subject: nfs: don't share pNFS DS connections between net namespaces
+
+From: Jeff Layton <jlayton@kernel.org>
+
+[ Upstream commit 6b9785dc8b13d9fb75ceec8cf4ea7ec3f3b1edbc ]
+
+Currently, different NFS clients can share the same DS connections, even
+when they are in different net namespaces. If a containerized client
+creates a DS connection, another container can find and use it. When the
+first client exits, the connection will close which can lead to stalls
+in other clients.
+
+Add a net namespace pointer to struct nfs4_pnfs_ds, and compare those
+value to the caller's netns in _data_server_lookup_locked() when
+searching for a nfs4_pnfs_ds to match.
+
+Reported-by: Omar Sandoval <osandov@osandov.com>
+Reported-by: Sargun Dillon <sargun@sargun.me>
+Closes: https://lore.kernel.org/linux-nfs/Z_ArpQC_vREh_hEA@telecaster/
+Tested-by: Sargun Dillon <sargun@sargun.me>
+Signed-off-by: Jeff Layton <jlayton@kernel.org>
+Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
+Link: https://lore.kernel.org/r/20250410-nfs-ds-netns-v2-1-f80b7979ba80@kernel.org
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/filelayout/filelayoutdev.c         | 6 +++---
+ fs/nfs/flexfilelayout/flexfilelayoutdev.c | 6 +++---
+ fs/nfs/pnfs.h                             | 4 +++-
+ fs/nfs/pnfs_nfs.c                         | 9 +++++----
+ 4 files changed, 14 insertions(+), 11 deletions(-)
+
+diff --git a/fs/nfs/filelayout/filelayoutdev.c b/fs/nfs/filelayout/filelayoutdev.c
+index acf4b88889dc3..d5f1fbfd9a0c7 100644
+--- a/fs/nfs/filelayout/filelayoutdev.c
++++ b/fs/nfs/filelayout/filelayoutdev.c
+@@ -75,6 +75,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+       struct page *scratch;
+       struct list_head dsaddrs;
+       struct nfs4_pnfs_ds_addr *da;
++      struct net *net = server->nfs_client->cl_net;
+       /* set up xdr stream */
+       scratch = alloc_page(gfp_flags);
+@@ -158,8 +159,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+               mp_count = be32_to_cpup(p); /* multipath count */
+               for (j = 0; j < mp_count; j++) {
+-                      da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net,
+-                                                  &stream, gfp_flags);
++                      da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
+                       if (da)
+                               list_add_tail(&da->da_node, &dsaddrs);
+               }
+@@ -169,7 +169,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+                       goto out_err_free_deviceid;
+               }
+-              dsaddr->ds_list[i] = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags);
++              dsaddr->ds_list[i] = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
+               if (!dsaddr->ds_list[i])
+                       goto out_err_drain_dsaddrs;
+diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+index e028f5a0ef5f6..d21c5ecfbf1cc 100644
+--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
++++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+@@ -49,6 +49,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+       struct nfs4_pnfs_ds_addr *da;
+       struct nfs4_ff_layout_ds *new_ds = NULL;
+       struct nfs4_ff_ds_version *ds_versions = NULL;
++      struct net *net = server->nfs_client->cl_net;
+       u32 mp_count;
+       u32 version_count;
+       __be32 *p;
+@@ -80,8 +81,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+       for (i = 0; i < mp_count; i++) {
+               /* multipath ds */
+-              da = nfs4_decode_mp_ds_addr(server->nfs_client->cl_net,
+-                                          &stream, gfp_flags);
++              da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
+               if (da)
+                       list_add_tail(&da->da_node, &dsaddrs);
+       }
+@@ -149,7 +149,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
+       new_ds->ds_versions = ds_versions;
+       new_ds->ds_versions_cnt = version_count;
+-      new_ds->ds = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags);
++      new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
+       if (!new_ds->ds)
+               goto out_err_drain_dsaddrs;
+diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
+index e3e6a41f19de6..f5173c1881845 100644
+--- a/fs/nfs/pnfs.h
++++ b/fs/nfs/pnfs.h
+@@ -59,6 +59,7 @@ struct nfs4_pnfs_ds {
+       struct list_head        ds_node;  /* nfs4_pnfs_dev_hlist dev_dslist */
+       char                    *ds_remotestr;  /* comma sep list of addrs */
+       struct list_head        ds_addrs;
++      const struct net        *ds_net;
+       struct nfs_client       *ds_clp;
+       refcount_t              ds_count;
+       unsigned long           ds_state;
+@@ -405,7 +406,8 @@ int pnfs_generic_commit_pagelist(struct inode *inode,
+ int pnfs_generic_scan_commit_lists(struct nfs_commit_info *cinfo, int max);
+ void pnfs_generic_write_commit_done(struct rpc_task *task, void *data);
+ void nfs4_pnfs_ds_put(struct nfs4_pnfs_ds *ds);
+-struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(struct list_head *dsaddrs,
++struct nfs4_pnfs_ds *nfs4_pnfs_ds_add(const struct net *net,
++                                    struct list_head *dsaddrs,
+                                     gfp_t gfp_flags);
+ void nfs4_pnfs_v3_ds_connect_unload(void);
+ int nfs4_pnfs_ds_connect(struct nfs_server *mds_srv, struct nfs4_pnfs_ds *ds,
+diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
+index 47a8da3f5c9ff..31afa88742f62 100644
+--- a/fs/nfs/pnfs_nfs.c
++++ b/fs/nfs/pnfs_nfs.c
+@@ -651,12 +651,12 @@ _same_data_server_addrs_locked(const struct list_head *dsaddrs1,
+  * Lookup DS by addresses.  nfs4_ds_cache_lock is held
+  */
+ static struct nfs4_pnfs_ds *
+-_data_server_lookup_locked(const struct list_head *dsaddrs)
++_data_server_lookup_locked(const struct net *net, const struct list_head *dsaddrs)
+ {
+       struct nfs4_pnfs_ds *ds;
+       list_for_each_entry(ds, &nfs4_data_server_cache, ds_node)
+-              if (_same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs))
++              if (ds->ds_net == net && _same_data_server_addrs_locked(&ds->ds_addrs, dsaddrs))
+                       return ds;
+       return NULL;
+ }
+@@ -763,7 +763,7 @@ nfs4_pnfs_remotestr(struct list_head *dsaddrs, gfp_t gfp_flags)
+  * uncached and return cached struct nfs4_pnfs_ds.
+  */
+ struct nfs4_pnfs_ds *
+-nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags)
++nfs4_pnfs_ds_add(const struct net *net, struct list_head *dsaddrs, gfp_t gfp_flags)
+ {
+       struct nfs4_pnfs_ds *tmp_ds, *ds = NULL;
+       char *remotestr;
+@@ -781,13 +781,14 @@ nfs4_pnfs_ds_add(struct list_head *dsaddrs, gfp_t gfp_flags)
+       remotestr = nfs4_pnfs_remotestr(dsaddrs, gfp_flags);
+       spin_lock(&nfs4_ds_cache_lock);
+-      tmp_ds = _data_server_lookup_locked(dsaddrs);
++      tmp_ds = _data_server_lookup_locked(net, dsaddrs);
+       if (tmp_ds == NULL) {
+               INIT_LIST_HEAD(&ds->ds_addrs);
+               list_splice_init(dsaddrs, &ds->ds_addrs);
+               ds->ds_remotestr = remotestr;
+               refcount_set(&ds->ds_count, 1);
+               INIT_LIST_HEAD(&ds->ds_node);
++              ds->ds_net = net;
+               ds->ds_clp = NULL;
+               list_add(&ds->ds_node, &nfs4_data_server_cache);
+               dprintk("%s add new data server %s\n", __func__,
+-- 
+2.39.5
+
diff --git a/queue-6.1/nvme-pci-add-nvme_quirk_no_deepest_ps-quirk-for-soli.patch b/queue-6.1/nvme-pci-add-nvme_quirk_no_deepest_ps-quirk-for-soli.patch
new file mode 100644 (file)
index 0000000..5f2fd59
--- /dev/null
@@ -0,0 +1,41 @@
+From 4d7daf9a69d2ce02c924f11562ce1f423811a070 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 10 May 2025 19:21:30 +0900
+Subject: nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro
+
+From: Ilya Guterman <amfernusus@gmail.com>
+
+[ Upstream commit e765bf89f42b5c82132a556b630affeb82b2a21f ]
+
+This commit adds the NVME_QUIRK_NO_DEEPEST_PS quirk for device
+[126f:2262], which belongs to device SOLIDIGM P44 Pro SSDPFKKW020X7
+
+The device frequently have trouble exiting the deepest power state (5),
+resulting in the entire disk being unresponsive.
+
+Verified by setting nvme_core.default_ps_max_latency_us=10000 and
+observing the expected behavior.
+
+Signed-off-by: Ilya Guterman <amfernusus@gmail.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/pci.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index 49a3cb8f1f105..218c1d69090ec 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -3592,6 +3592,8 @@ static const struct pci_device_id nvme_id_table[] = {
+               .driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
+       { PCI_DEVICE(0x1e49, 0x0041),   /* ZHITAI TiPro7000 NVMe SSD */
+               .driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
++      { PCI_DEVICE(0x025e, 0xf1ac),   /* SOLIDIGM  P44 pro SSDPFKKW020X7  */
++              .driver_data = NVME_QUIRK_NO_DEEPEST_PS, },
+       { PCI_DEVICE(0xc0a9, 0x540a),   /* Crucial P2 */
+               .driver_data = NVME_QUIRK_BOGUS_NID, },
+       { PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */
+-- 
+2.39.5
+
diff --git a/queue-6.1/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch b/queue-6.1/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch
new file mode 100644 (file)
index 0000000..26e9215
--- /dev/null
@@ -0,0 +1,111 @@
+From 3ecb13adb86b335c53830742350d4f667dd5e2cf Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 9 May 2025 21:42:49 +0300
+Subject: platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Valtteri Koskivuori <vkoskiv@gmail.com>
+
+[ Upstream commit a7e255ff9fe4d9b8b902023aaf5b7a673786bb50 ]
+
+The S2110 has an additional set of media playback control keys enabled
+by a hardware toggle button that switches the keys between "Application"
+and "Player" modes. Toggling "Player" mode just shifts the scancode of
+each hotkey up by 4.
+
+Add defines for new scancodes, and a keymap and dmi id for the S2110.
+
+Tested on a Fujitsu Lifebook S2110.
+
+Signed-off-by: Valtteri Koskivuori <vkoskiv@gmail.com>
+Acked-by: Jonathan Woithe <jwoithe@just42.net>
+Link: https://lore.kernel.org/r/20250509184251.713003-1-vkoskiv@gmail.com
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/fujitsu-laptop.c | 33 +++++++++++++++++++++++----
+ 1 file changed, 29 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
+index b543d117b12c7..259eb2a2858f8 100644
+--- a/drivers/platform/x86/fujitsu-laptop.c
++++ b/drivers/platform/x86/fujitsu-laptop.c
+@@ -17,13 +17,13 @@
+ /*
+  * fujitsu-laptop.c - Fujitsu laptop support, providing access to additional
+  * features made available on a range of Fujitsu laptops including the
+- * P2xxx/P5xxx/S6xxx/S7xxx series.
++ * P2xxx/P5xxx/S2xxx/S6xxx/S7xxx series.
+  *
+  * This driver implements a vendor-specific backlight control interface for
+  * Fujitsu laptops and provides support for hotkeys present on certain Fujitsu
+  * laptops.
+  *
+- * This driver has been tested on a Fujitsu Lifebook S6410, S7020 and
++ * This driver has been tested on a Fujitsu Lifebook S2110, S6410, S7020 and
+  * P8010.  It should work on most P-series and S-series Lifebooks, but
+  * YMMV.
+  *
+@@ -102,7 +102,11 @@
+ #define KEY2_CODE                     0x411
+ #define KEY3_CODE                     0x412
+ #define KEY4_CODE                     0x413
+-#define KEY5_CODE                     0x420
++#define KEY5_CODE                     0x414
++#define KEY6_CODE                     0x415
++#define KEY7_CODE                     0x416
++#define KEY8_CODE                     0x417
++#define KEY9_CODE                     0x420
+ /* Hotkey ringbuffer limits */
+ #define MAX_HOTKEY_RINGBUFFER_SIZE    100
+@@ -450,7 +454,7 @@ static const struct key_entry keymap_default[] = {
+       { KE_KEY, KEY2_CODE,            { KEY_PROG2 } },
+       { KE_KEY, KEY3_CODE,            { KEY_PROG3 } },
+       { KE_KEY, KEY4_CODE,            { KEY_PROG4 } },
+-      { KE_KEY, KEY5_CODE,            { KEY_RFKILL } },
++      { KE_KEY, KEY9_CODE,            { KEY_RFKILL } },
+       /* Soft keys read from status flags */
+       { KE_KEY, FLAG_RFKILL,          { KEY_RFKILL } },
+       { KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } },
+@@ -474,6 +478,18 @@ static const struct key_entry keymap_p8010[] = {
+       { KE_END, 0 }
+ };
++static const struct key_entry keymap_s2110[] = {
++      { KE_KEY, KEY1_CODE, { KEY_PROG1 } }, /* "A" */
++      { KE_KEY, KEY2_CODE, { KEY_PROG2 } }, /* "B" */
++      { KE_KEY, KEY3_CODE, { KEY_WWW } },   /* "Internet" */
++      { KE_KEY, KEY4_CODE, { KEY_EMAIL } }, /* "E-mail" */
++      { KE_KEY, KEY5_CODE, { KEY_STOPCD } },
++      { KE_KEY, KEY6_CODE, { KEY_PLAYPAUSE } },
++      { KE_KEY, KEY7_CODE, { KEY_PREVIOUSSONG } },
++      { KE_KEY, KEY8_CODE, { KEY_NEXTSONG } },
++      { KE_END, 0 }
++};
++
+ static const struct key_entry *keymap = keymap_default;
+ static int fujitsu_laptop_dmi_keymap_override(const struct dmi_system_id *id)
+@@ -511,6 +527,15 @@ static const struct dmi_system_id fujitsu_laptop_dmi_table[] = {
+               },
+               .driver_data = (void *)keymap_p8010
+       },
++      {
++              .callback = fujitsu_laptop_dmi_keymap_override,
++              .ident = "Fujitsu LifeBook S2110",
++              .matches = {
++                      DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
++                      DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK S2110"),
++              },
++              .driver_data = (void *)keymap_s2110
++      },
+       {}
+ };
+-- 
+2.39.5
+
diff --git a/queue-6.1/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch b/queue-6.1/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch
new file mode 100644 (file)
index 0000000..14fd969
--- /dev/null
@@ -0,0 +1,56 @@
+From f3171dc4d6b6d4fc8679b0dfda08ff654949e46f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 16 May 2025 22:33:37 -0400
+Subject: platform/x86: thinkpad_acpi: Ignore battery threshold change event
+ notification
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Mark Pearson <mpearson-lenovo@squebb.ca>
+
+[ Upstream commit 29e4e6b4235fefa5930affb531fe449cac330a72 ]
+
+If user modifies the battery charge threshold an ACPI event is generated.
+Confirmed with Lenovo FW team this is only generated on user event. As no
+action is needed, ignore the event and prevent spurious kernel logs.
+
+Reported-by: Derek Barbosa <debarbos@redhat.com>
+Closes: https://lore.kernel.org/platform-driver-x86/7e9a1c47-5d9c-4978-af20-3949d53fb5dc@app.fastmail.com/T/#m5f5b9ae31d3fbf30d7d9a9d76c15fb3502dfd903
+Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Armin Wolf <W_Armin@gmx.de>
+Link: https://lore.kernel.org/r/20250517023348.2962591-1-mpearson-lenovo@squebb.ca
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/thinkpad_acpi.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
+index 295939e9ac69d..17d74434e6046 100644
+--- a/drivers/platform/x86/thinkpad_acpi.c
++++ b/drivers/platform/x86/thinkpad_acpi.c
+@@ -211,6 +211,7 @@ enum tpacpi_hkey_event_t {
+       /* Thermal events */
+       TP_HKEY_EV_ALARM_BAT_HOT        = 0x6011, /* battery too hot */
+       TP_HKEY_EV_ALARM_BAT_XHOT       = 0x6012, /* battery critically hot */
++      TP_HKEY_EV_ALARM_BAT_LIM_CHANGE = 0x6013, /* battery charge limit changed*/
+       TP_HKEY_EV_ALARM_SENSOR_HOT     = 0x6021, /* sensor too hot */
+       TP_HKEY_EV_ALARM_SENSOR_XHOT    = 0x6022, /* sensor critically hot */
+       TP_HKEY_EV_THM_TABLE_CHANGED    = 0x6030, /* windows; thermal table changed */
+@@ -3948,6 +3949,10 @@ static bool hotkey_notify_6xxx(const u32 hkey,
+               pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n");
+               /* recommended action: immediate sleep/hibernate */
+               break;
++      case TP_HKEY_EV_ALARM_BAT_LIM_CHANGE:
++              pr_debug("Battery Info: battery charge threshold changed\n");
++              /* User changed charging threshold. No action needed */
++              return true;
+       case TP_HKEY_EV_ALARM_SENSOR_HOT:
+               pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n");
+               /* recommended action: warn user through gui, that */
+-- 
+2.39.5
+
diff --git a/queue-6.1/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch b/queue-6.1/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch
new file mode 100644 (file)
index 0000000..b61f971
--- /dev/null
@@ -0,0 +1,59 @@
+From 517c39d6c6c804ca2de26d2e546e74446671f0e0 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 May 2025 01:55:13 +0900
+Subject: platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: John Chau <johnchau@0atlas.com>
+
+[ Upstream commit a032f29a15412fab9f4352e0032836d51420a338 ]
+
+Change get_thinkpad_model_data() to check for additional vendor name
+"NEC" in order to support NEC Lavie X1475JAS notebook (and perhaps
+more).
+
+The reason of this works with minimal changes is because NEC Lavie
+X1475JAS is a Thinkpad inside. ACPI dumps reveals its OEM ID to be
+"LENOVO", BIOS version "R2PET30W" matches typical Lenovo BIOS version,
+the existence of HKEY of LEN0268, with DMI fw string is "R2PHT24W".
+
+I compiled and tested with my own machine, attached the dmesg
+below as proof of work:
+[    6.288932] thinkpad_acpi: ThinkPad ACPI Extras v0.26
+[    6.288937] thinkpad_acpi: http://ibm-acpi.sf.net/
+[    6.288938] thinkpad_acpi: ThinkPad BIOS R2PET30W (1.11 ), EC R2PHT24W
+[    6.307000] thinkpad_acpi: radio switch found; radios are enabled
+[    6.307030] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
+[    6.307033] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
+[    6.320322] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
+[    6.371963] thinkpad_acpi: secondary fan control detected & enabled
+[    6.391922] thinkpad_acpi: battery 1 registered (start 0, stop 85, behaviours: 0x7)
+[    6.398375] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input13
+
+Signed-off-by: John Chau <johnchau@0atlas.com>
+Link: https://lore.kernel.org/r/20250504165513.295135-1-johnchau@0atlas.com
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/thinkpad_acpi.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
+index 26ca9c453a59c..295939e9ac69d 100644
+--- a/drivers/platform/x86/thinkpad_acpi.c
++++ b/drivers/platform/x86/thinkpad_acpi.c
+@@ -11517,6 +11517,8 @@ static int __must_check __init get_thinkpad_model_data(
+               tp->vendor = PCI_VENDOR_ID_IBM;
+       else if (dmi_name_in_vendors("LENOVO"))
+               tp->vendor = PCI_VENDOR_ID_LENOVO;
++      else if (dmi_name_in_vendors("NEC"))
++              tp->vendor = PCI_VENDOR_ID_LENOVO;
+       else
+               return 0;
+-- 
+2.39.5
+
index 11ca4ef9c5587d4399cb1ee4341009cfb1c63762..ff9ca1159f526982e8a1ebce9930f771fd09884a 100644 (file)
@@ -313,3 +313,13 @@ coredump-fix-error-handling-for-replace_fd.patch
 pid-add-pidfd_prepare.patch
 fork-use-pidfd_prepare.patch
 coredump-hand-a-pidfd-to-the-usermode-coredump-helper.patch
+hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch
+nfs-don-t-share-pnfs-ds-connections-between-net-name.patch
+platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch
+um-let-make-clean-properly-clean-underlying-subarch-.patch
+spi-spi-sun4i-fix-early-activation.patch
+nvme-pci-add-nvme_quirk_no_deepest_ps-quirk-for-soli.patch
+nfs-avoid-flushing-data-while-holding-directory-lock.patch
+platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch
+platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch
+net-ethernet-ti-am65-cpsw-lower-random-mac-address-e.patch
diff --git a/queue-6.1/spi-spi-sun4i-fix-early-activation.patch b/queue-6.1/spi-spi-sun4i-fix-early-activation.patch
new file mode 100644 (file)
index 0000000..a9001ed
--- /dev/null
@@ -0,0 +1,52 @@
+From 088936f5f9e97f39a518045ac5f479ebe3747287 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 2 May 2025 11:55:20 +0200
+Subject: spi: spi-sun4i: fix early activation
+
+From: Alessandro Grassi <alessandro.grassi@mailbox.org>
+
+[ Upstream commit fb98bd0a13de2c9d96cb5c00c81b5ca118ac9d71 ]
+
+The SPI interface is activated before the CPOL setting is applied. In
+that moment, the clock idles high and CS goes low. After a short delay,
+CPOL and other settings are applied, which may cause the clock to change
+state and idle low. This transition is not part of a clock cycle, and it
+can confuse the receiving device.
+
+To prevent this unexpected transition, activate the interface while CPOL
+and the other settings are being applied.
+
+Signed-off-by: Alessandro Grassi <alessandro.grassi@mailbox.org>
+Link: https://patch.msgid.link/20250502095520.13825-1-alessandro.grassi@mailbox.org
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spi-sun4i.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
+index 6000d0761206c..6937f5c4d868f 100644
+--- a/drivers/spi/spi-sun4i.c
++++ b/drivers/spi/spi-sun4i.c
+@@ -263,6 +263,9 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
+       else
+               reg |= SUN4I_CTL_DHB;
++      /* Now that the settings are correct, enable the interface */
++      reg |= SUN4I_CTL_ENABLE;
++
+       sun4i_spi_write(sspi, SUN4I_CTL_REG, reg);
+       /* Ensure that we have a parent clock fast enough */
+@@ -403,7 +406,7 @@ static int sun4i_spi_runtime_resume(struct device *dev)
+       }
+       sun4i_spi_write(sspi, SUN4I_CTL_REG,
+-                      SUN4I_CTL_ENABLE | SUN4I_CTL_MASTER | SUN4I_CTL_TP);
++                      SUN4I_CTL_MASTER | SUN4I_CTL_TP);
+       return 0;
+-- 
+2.39.5
+
diff --git a/queue-6.1/um-let-make-clean-properly-clean-underlying-subarch-.patch b/queue-6.1/um-let-make-clean-properly-clean-underlying-subarch-.patch
new file mode 100644 (file)
index 0000000..34a1057
--- /dev/null
@@ -0,0 +1,59 @@
+From cafd7a6cb9e903a3954eea0ee9248f4c5cd4b871 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 7 May 2025 16:49:33 +0900
+Subject: um: let 'make clean' properly clean underlying SUBARCH as well
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ Upstream commit ab09da75700e9d25c7dfbc7f7934920beb5e39b9 ]
+
+Building the kernel with O= is affected by stale in-tree build artifacts.
+
+So, if the source tree is not clean, Kbuild displays the following:
+
+  $ make ARCH=um O=build defconfig
+  make[1]: Entering directory '/.../linux/build'
+  ***
+  *** The source tree is not clean, please run 'make ARCH=um mrproper'
+  *** in /.../linux
+  ***
+  make[2]: *** [/.../linux/Makefile:673: outputmakefile] Error 1
+  make[1]: *** [/.../linux/Makefile:248: __sub-make] Error 2
+  make[1]: Leaving directory '/.../linux/build'
+  make: *** [Makefile:248: __sub-make] Error 2
+
+Usually, running 'make mrproper' is sufficient for cleaning the source
+tree for out-of-tree builds.
+
+However, building UML generates build artifacts not only in arch/um/,
+but also in the SUBARCH directory (i.e., arch/x86/). If in-tree stale
+files remain under arch/x86/, Kbuild will reuse them instead of creating
+new ones under the specified build directory.
+
+This commit makes 'make ARCH=um clean' recurse into the SUBARCH directory.
+
+Reported-by: Shuah Khan <skhan@linuxfoundation.org>
+Closes: https://lore.kernel.org/lkml/20250502172459.14175-1-skhan@linuxfoundation.org/
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Acked-by: Johannes Berg <johannes@sipsolutions.net>
+Reviewed-by: David Gow <davidgow@google.com>
+Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/um/Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/um/Makefile b/arch/um/Makefile
+index 778c50f273992..25d0501549f54 100644
+--- a/arch/um/Makefile
++++ b/arch/um/Makefile
+@@ -155,5 +155,6 @@ MRPROPER_FILES += $(HOST_DIR)/include/generated
+ archclean:
+       @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
+               -o -name '*.gcov' \) -type f -print | xargs rm -f
++      $(Q)$(MAKE) -f $(srctree)/Makefile ARCH=$(HEADER_ARCH) clean
+ export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH
+-- 
+2.39.5
+