From: Sasha Levin Date: Mon, 2 Jun 2025 13:05:55 +0000 (-0400) Subject: Fixes for 5.10 X-Git-Tag: v5.4.294~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45b13f6f665cf5cad910167950caab39d3716cd1;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.10 Signed-off-by: Sasha Levin --- diff --git a/queue-5.10/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch b/queue-5.10/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch new file mode 100644 index 0000000000..fcebc63462 --- /dev/null +++ b/queue-5.10/hid-quirks-add-adata-xpg-alpha-wireless-mouse-suppor.patch @@ -0,0 +1,50 @@ +From f9a0b5f71d1359b9b20278b9c953f55f567d85cb Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 9 Apr 2025 00:04:28 -0600 +Subject: HID: quirks: Add ADATA XPG alpha wireless mouse support + +From: Milton Barrera + +[ 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 +Signed-off-by: Jiri Kosina +Signed-off-by: Sasha Levin +--- + 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 d86720fce48f9..4b8f8e0ce8ca2 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 9c1afe9cdddfd..b3e7ede8f398e 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-5.10/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch b/queue-5.10/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch new file mode 100644 index 0000000000..f9fdc6ec8f --- /dev/null +++ b/queue-5.10/nfs-don-t-share-pnfs-ds-connections-between-net-name.patch @@ -0,0 +1,166 @@ +From cdd6e83e07dde18d70ff4a830259c1cd76444b55 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 10 Apr 2025 16:42:03 -0400 +Subject: nfs: don't share pNFS DS connections between net namespaces + +From: Jeff Layton + +[ 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 +Reported-by: Sargun Dillon +Closes: https://lore.kernel.org/linux-nfs/Z_ArpQC_vREh_hEA@telecaster/ +Tested-by: Sargun Dillon +Signed-off-by: Jeff Layton +Reviewed-by: Benjamin Coddington +Link: https://lore.kernel.org/r/20250410-nfs-ds-netns-v2-1-f80b7979ba80@kernel.org +Signed-off-by: Trond Myklebust +Signed-off-by: Sasha Levin +--- + 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 86c3f7e69ec42..e6bf55e37521f 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); +@@ -160,8 +161,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); + } +@@ -171,7 +171,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 bfa7202ca7be1..4b0cdddce6eb3 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); + } +@@ -147,7 +147,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 a7cf84a6673bf..f88b0cf00f21e 100644 +--- a/fs/nfs/pnfs.h ++++ b/fs/nfs/pnfs.h +@@ -57,6 +57,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 a2ad8bb87e2db..461c00c1338c2 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; + } +@@ -749,7 +749,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; +@@ -767,13 +767,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-5.10/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch b/queue-5.10/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch new file mode 100644 index 0000000000..0434daf981 --- /dev/null +++ b/queue-5.10/platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch @@ -0,0 +1,111 @@ +From 53c9c4c5d3262580e8ab75f83968e8e656470b66 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Acked-by: Jonathan Woithe +Link: https://lore.kernel.org/r/20250509184251.713003-1-vkoskiv@gmail.com +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + 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 80929380ec7e3..04ccfdd99e277 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-5.10/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch b/queue-5.10/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch new file mode 100644 index 0000000000..80f31e3134 --- /dev/null +++ b/queue-5.10/platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch @@ -0,0 +1,56 @@ +From 65dfa31caadb42cd2ff4b42934554f030031e40b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Closes: https://lore.kernel.org/platform-driver-x86/7e9a1c47-5d9c-4978-af20-3949d53fb5dc@app.fastmail.com/T/#m5f5b9ae31d3fbf30d7d9a9d76c15fb3502dfd903 +Signed-off-by: Mark Pearson +Reviewed-by: Hans de Goede +Reviewed-by: Armin Wolf +Link: https://lore.kernel.org/r/20250517023348.2962591-1-mpearson-lenovo@squebb.ca +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + 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 e9e63d8cbfbfd..5a8434da60e78 100644 +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -195,6 +195,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 */ +@@ -4049,6 +4050,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-5.10/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch b/queue-5.10/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch new file mode 100644 index 0000000000..81acafe668 --- /dev/null +++ b/queue-5.10/platform-x86-thinkpad_acpi-support-also-nec-lavie-x1.patch @@ -0,0 +1,59 @@ +From abcba30cc492ee85b7df279fa8188016b6e605e3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Link: https://lore.kernel.org/r/20250504165513.295135-1-johnchau@0atlas.com +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + 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 c07b3bcbf795d..e9e63d8cbfbfd 100644 +--- a/drivers/platform/x86/thinkpad_acpi.c ++++ b/drivers/platform/x86/thinkpad_acpi.c +@@ -10233,6 +10233,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 + diff --git a/queue-5.10/series b/queue-5.10/series index bfddbf3342..5a2917ea7c 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -258,3 +258,11 @@ 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 +tpm-tis-double-the-timeout-b-to-4s.patch +platform-x86-fujitsu-laptop-support-lifebook-s2110-h.patch +platform-x86-thinkpad_acpi-ignore-battery-threshold-.patch diff --git a/queue-5.10/spi-spi-sun4i-fix-early-activation.patch b/queue-5.10/spi-spi-sun4i-fix-early-activation.patch new file mode 100644 index 0000000000..c763bcf9a6 --- /dev/null +++ b/queue-5.10/spi-spi-sun4i-fix-early-activation.patch @@ -0,0 +1,52 @@ +From 943a2c1f3b78be4576f3e57b9e6414eaecf4d74c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 2 May 2025 11:55:20 +0200 +Subject: spi: spi-sun4i: fix early activation + +From: Alessandro Grassi + +[ 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 +Link: https://patch.msgid.link/20250502095520.13825-1-alessandro.grassi@mailbox.org +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + 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 1fdfc6e6691d2..a8fba310d7004 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-5.10/tpm-tis-double-the-timeout-b-to-4s.patch b/queue-5.10/tpm-tis-double-the-timeout-b-to-4s.patch new file mode 100644 index 0000000000..35ad5cc52c --- /dev/null +++ b/queue-5.10/tpm-tis-double-the-timeout-b-to-4s.patch @@ -0,0 +1,76 @@ +From 753877d86ef87fc35da535a36e0fb6ece3eba2a3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 4 Apr 2025 10:23:14 +0200 +Subject: tpm: tis: Double the timeout B to 4s + +From: Michal Suchanek + +[ Upstream commit 2f661f71fda1fc0c42b7746ca5b7da529eb6b5be ] + +With some Infineon chips the timeouts in tpm_tis_send_data (both B and +C) can reach up to about 2250 ms. + +Timeout C is retried since +commit de9e33df7762 ("tpm, tpm_tis: Workaround failed command reception on Infineon devices") + +Timeout B still needs to be extended. + +The problem is most commonly encountered with context related operation +such as load context/save context. These are issued directly by the +kernel, and there is no retry logic for them. + +When a filesystem is set up to use the TPM for unlocking the boot fails, +and restarting the userspace service is ineffective. This is likely +because ignoring a load context/save context result puts the real TPM +state and the TPM state expected by the kernel out of sync. + +Chips known to be affected: +tpm_tis IFX1522:00: 2.0 TPM (device-id 0x1D, rev-id 54) +Description: SLB9672 +Firmware Revision: 15.22 + +tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1B, rev-id 22) +Firmware Revision: 7.83 + +tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1A, rev-id 16) +Firmware Revision: 5.63 + +Link: https://lore.kernel.org/linux-integrity/Z5pI07m0Muapyu9w@kitsune.suse.cz/ +Signed-off-by: Michal Suchanek +Reviewed-by: Jarkko Sakkinen +Signed-off-by: Jarkko Sakkinen +Signed-off-by: Sasha Levin +--- + drivers/char/tpm/tpm_tis_core.h | 2 +- + include/linux/tpm.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/char/tpm/tpm_tis_core.h b/drivers/char/tpm/tpm_tis_core.h +index 464ed352ab2e8..ed7b2caa9ebbd 100644 +--- a/drivers/char/tpm/tpm_tis_core.h ++++ b/drivers/char/tpm/tpm_tis_core.h +@@ -53,7 +53,7 @@ enum tis_int_flags { + enum tis_defaults { + TIS_MEM_LEN = 0x5000, + TIS_SHORT_TIMEOUT = 750, /* ms */ +- TIS_LONG_TIMEOUT = 2000, /* 2 sec */ ++ TIS_LONG_TIMEOUT = 4000, /* 4 secs */ + TIS_TIMEOUT_MIN_ATML = 14700, /* usecs */ + TIS_TIMEOUT_MAX_ATML = 15000, /* usecs */ + }; +diff --git a/include/linux/tpm.h b/include/linux/tpm.h +index 95c3069823f9b..7868e847eee0e 100644 +--- a/include/linux/tpm.h ++++ b/include/linux/tpm.h +@@ -174,7 +174,7 @@ enum tpm2_const { + + enum tpm2_timeouts { + TPM2_TIMEOUT_A = 750, +- TPM2_TIMEOUT_B = 2000, ++ TPM2_TIMEOUT_B = 4000, + TPM2_TIMEOUT_C = 200, + TPM2_TIMEOUT_D = 30, + TPM2_DURATION_SHORT = 20, +-- +2.39.5 + diff --git a/queue-5.10/um-let-make-clean-properly-clean-underlying-subarch-.patch b/queue-5.10/um-let-make-clean-properly-clean-underlying-subarch-.patch new file mode 100644 index 0000000000..dfebc1fb7c --- /dev/null +++ b/queue-5.10/um-let-make-clean-properly-clean-underlying-subarch-.patch @@ -0,0 +1,59 @@ +From 8ff3e140715fda8e0c32498efa1ce67eadd7d05d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 7 May 2025 16:49:33 +0900 +Subject: um: let 'make clean' properly clean underlying SUBARCH as well + +From: Masahiro Yamada + +[ 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 +Closes: https://lore.kernel.org/lkml/20250502172459.14175-1-skhan@linuxfoundation.org/ +Signed-off-by: Masahiro Yamada +Acked-by: Johannes Berg +Reviewed-by: David Gow +Reviewed-by: Shuah Khan +Signed-off-by: Sasha Levin +--- + arch/um/Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/um/Makefile b/arch/um/Makefile +index 4211e23a2f68f..e2caca06c1553 100644 +--- a/arch/um/Makefile ++++ b/arch/um/Makefile +@@ -153,5 +153,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 +