]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.12-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 14 Sep 2025 16:35:58 +0000 (18:35 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 14 Sep 2025 16:35:58 +0000 (18:35 +0200)
added patches:
hrtimers-unconditionally-update-target-cpu-base-after-offline-timer-migration.patch
input-i8042-add-tuxedo-infinitybook-pro-gen10-amd-to-i8042-quirk-table.patch
input-iqs7222-avoid-enabling-unused-interrupts.patch

queue-6.12/hrtimers-unconditionally-update-target-cpu-base-after-offline-timer-migration.patch [new file with mode: 0644]
queue-6.12/input-i8042-add-tuxedo-infinitybook-pro-gen10-amd-to-i8042-quirk-table.patch [new file with mode: 0644]
queue-6.12/input-iqs7222-avoid-enabling-unused-interrupts.patch [new file with mode: 0644]
queue-6.12/series

diff --git a/queue-6.12/hrtimers-unconditionally-update-target-cpu-base-after-offline-timer-migration.patch b/queue-6.12/hrtimers-unconditionally-update-target-cpu-base-after-offline-timer-migration.patch
new file mode 100644 (file)
index 0000000..54b2f38
--- /dev/null
@@ -0,0 +1,73 @@
+From e895f8e29119c8c966ea794af9e9100b10becb88 Mon Sep 17 00:00:00 2001
+From: Xiongfeng Wang <wangxiongfeng2@huawei.com>
+Date: Tue, 5 Aug 2025 16:10:25 +0800
+Subject: hrtimers: Unconditionally update target CPU base after offline timer migration
+
+From: Xiongfeng Wang <wangxiongfeng2@huawei.com>
+
+commit e895f8e29119c8c966ea794af9e9100b10becb88 upstream.
+
+When testing softirq based hrtimers on an ARM32 board, with high resolution
+mode and NOHZ inactive, softirq based hrtimers fail to expire after being
+moved away from an offline CPU:
+
+CPU0                           CPU1
+                               hrtimer_start(..., HRTIMER_MODE_SOFT);
+cpu_down(CPU1)                 ...
+                               hrtimers_cpu_dying()
+                                 // Migrate timers to CPU0
+                                 smp_call_function_single(CPU0, returgger_next_event);
+  retrigger_next_event()
+    if (!highres && !nohz)
+        return;
+
+As retrigger_next_event() is a NOOP when both high resolution timers and
+NOHZ are inactive CPU0's hrtimer_cpu_base::softirq_expires_next is not
+updated and the migrated softirq timers never expire unless there is a
+softirq based hrtimer queued on CPU0 later.
+
+Fix this by removing the hrtimer_hres_active() and tick_nohz_active() check
+in retrigger_next_event(), which enforces a full update of the CPU base.
+As this is not a fast path the extra cost does not matter.
+
+[ tglx: Massaged change log ]
+
+Fixes: 5c0930ccaad5 ("hrtimers: Push pending hrtimers away from outgoing CPU earlier")
+Co-developed-by: Frederic Weisbecker <frederic@kernel.org>
+Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
+Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Link: https://lore.kernel.org/all/20250805081025.54235-1-wangxiongfeng2@huawei.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ kernel/time/hrtimer.c |   11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+--- a/kernel/time/hrtimer.c
++++ b/kernel/time/hrtimer.c
+@@ -798,10 +798,10 @@ static void retrigger_next_event(void *a
+        * of the next expiring timer is enough. The return from the SMP
+        * function call will take care of the reprogramming in case the
+        * CPU was in a NOHZ idle sleep.
++       *
++       * In periodic low resolution mode, the next softirq expiration
++       * must also be updated.
+        */
+-      if (!hrtimer_hres_active(base) && !tick_nohz_active)
+-              return;
+-
+       raw_spin_lock(&base->lock);
+       hrtimer_update_base(base);
+       if (hrtimer_hres_active(base))
+@@ -2286,11 +2286,6 @@ int hrtimers_cpu_dying(unsigned int dyin
+                                    &new_base->clock_base[i]);
+       }
+-      /*
+-       * The migration might have changed the first expiring softirq
+-       * timer on this CPU. Update it.
+-       */
+-      __hrtimer_get_next_event(new_base, HRTIMER_ACTIVE_SOFT);
+       /* Tell the other CPU to retrigger the next event */
+       smp_call_function_single(ncpu, retrigger_next_event, NULL, 0);
diff --git a/queue-6.12/input-i8042-add-tuxedo-infinitybook-pro-gen10-amd-to-i8042-quirk-table.patch b/queue-6.12/input-i8042-add-tuxedo-infinitybook-pro-gen10-amd-to-i8042-quirk-table.patch
new file mode 100644 (file)
index 0000000..89d8404
--- /dev/null
@@ -0,0 +1,46 @@
+From 1939a9fcb80353dd8b111aa1e79c691afbde08b4 Mon Sep 17 00:00:00 2001
+From: Christoffer Sandberg <cs@tuxedo.de>
+Date: Tue, 26 Aug 2025 16:26:06 +0200
+Subject: Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table
+
+From: Christoffer Sandberg <cs@tuxedo.de>
+
+commit 1939a9fcb80353dd8b111aa1e79c691afbde08b4 upstream.
+
+Occasionally wakes up from suspend with missing input on the internal
+keyboard. Setting the quirks appears to fix the issue for this device as
+well.
+
+Signed-off-by: Christoffer Sandberg <cs@tuxedo.de>
+Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
+Cc: stable@vger.kernel.org
+Link: https://lore.kernel.org/r/20250826142646.13516-1-wse@tuxedocomputers.com
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/input/serio/i8042-acpipnpio.h |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/drivers/input/serio/i8042-acpipnpio.h
++++ b/drivers/input/serio/i8042-acpipnpio.h
+@@ -1155,6 +1155,20 @@ static const struct dmi_system_id i8042_
+               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+       },
++      {
++              .matches = {
++                      DMI_MATCH(DMI_BOARD_NAME, "XxHP4NAx"),
++              },
++              .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
++                                      SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
++      },
++      {
++              .matches = {
++                      DMI_MATCH(DMI_BOARD_NAME, "XxKK4NAx_XxSP4NAx"),
++              },
++              .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
++                                      SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
++      },
+       /*
+        * A lot of modern Clevo barebones have touchpad and/or keyboard issues
+        * after suspend fixable with the forcenorestore quirk.
diff --git a/queue-6.12/input-iqs7222-avoid-enabling-unused-interrupts.patch b/queue-6.12/input-iqs7222-avoid-enabling-unused-interrupts.patch
new file mode 100644 (file)
index 0000000..568ddc1
--- /dev/null
@@ -0,0 +1,37 @@
+From c9ddc41cdd522f2db5d492eda3df8994d928be34 Mon Sep 17 00:00:00 2001
+From: Jeff LaBundy <jeff@labundy.com>
+Date: Sun, 17 Aug 2025 19:20:22 -0500
+Subject: Input: iqs7222 - avoid enabling unused interrupts
+
+From: Jeff LaBundy <jeff@labundy.com>
+
+commit c9ddc41cdd522f2db5d492eda3df8994d928be34 upstream.
+
+If a proximity event node is defined so as to specify the wake-up
+properties of the touch surface, the proximity event interrupt is
+enabled unconditionally. This may result in unwanted interrupts.
+
+Solve this problem by enabling the interrupt only if the event is
+mapped to a key or switch code.
+
+Signed-off-by: Jeff LaBundy <jeff@labundy.com>
+Link: https://lore.kernel.org/r/aKJxxgEWpNaNcUaW@nixie71
+Cc: stable@vger.kernel.org
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/input/misc/iqs7222.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/input/misc/iqs7222.c
++++ b/drivers/input/misc/iqs7222.c
+@@ -2430,6 +2430,9 @@ static int iqs7222_parse_chan(struct iqs
+               if (error)
+                       return error;
++              if (!iqs7222->kp_type[chan_index][i])
++                      continue;
++
+               if (!dev_desc->event_offset)
+                       continue;
index 13b362c8ce6bdf572a780a9809f0498fdd6998ce..80466d62786bc33fb18d52b1515d4034ec4ae444 100644 (file)
@@ -82,3 +82,6 @@ mm-hugetlb-add-missing-hugetlb_lock-in-__unmap_hugepage_range.patch
 mtd-spinand-winbond-fix-oob_layout-for-w25n01jw.patch
 btrfs-use-readahead_expand-on-compressed-extents.patch
 btrfs-fix-corruption-reading-compressed-range-when-block-size-is-smaller-than-page-size.patch
+hrtimers-unconditionally-update-target-cpu-base-after-offline-timer-migration.patch
+input-iqs7222-avoid-enabling-unused-interrupts.patch
+input-i8042-add-tuxedo-infinitybook-pro-gen10-amd-to-i8042-quirk-table.patch