]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Feb 2024 15:21:12 +0000 (16:21 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Feb 2024 15:21:12 +0000 (16:21 +0100)
added patches:
hrtimer-ignore-slack-time-for-rt-tasks-in-schedule_hrtimeout_range.patch

queue-5.15/hrtimer-ignore-slack-time-for-rt-tasks-in-schedule_hrtimeout_range.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/hrtimer-ignore-slack-time-for-rt-tasks-in-schedule_hrtimeout_range.patch b/queue-5.15/hrtimer-ignore-slack-time-for-rt-tasks-in-schedule_hrtimeout_range.patch
new file mode 100644 (file)
index 0000000..52094dc
--- /dev/null
@@ -0,0 +1,68 @@
+From 0c52310f260014d95c1310364379772cb74cf82d Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Mon, 23 Jan 2023 09:32:06 -0800
+Subject: hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range()
+
+From: Davidlohr Bueso <dave@stgolabs.net>
+
+commit 0c52310f260014d95c1310364379772cb74cf82d upstream.
+
+While in theory the timer can be triggered before expires + delta, for the
+cases of RT tasks they really have no business giving any lenience for
+extra slack time, so override any passed value by the user and always use
+zero for schedule_hrtimeout_range() calls. Furthermore, this is similar to
+what the nanosleep(2) family already does with current->timer_slack_ns.
+
+Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Link: https://lore.kernel.org/r/20230123173206.6764-3-dave@stgolabs.net
+Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ kernel/time/hrtimer.c |   14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+--- a/kernel/time/hrtimer.c
++++ b/kernel/time/hrtimer.c
+@@ -2266,7 +2266,7 @@ void __init hrtimers_init(void)
+ /**
+  * schedule_hrtimeout_range_clock - sleep until timeout
+  * @expires:  timeout value (ktime_t)
+- * @delta:    slack in expires timeout (ktime_t)
++ * @delta:    slack in expires timeout (ktime_t) for SCHED_OTHER tasks
+  * @mode:     timer mode
+  * @clock_id: timer clock to be used
+  */
+@@ -2293,6 +2293,13 @@ schedule_hrtimeout_range_clock(ktime_t *
+               return -EINTR;
+       }
++      /*
++       * Override any slack passed by the user if under
++       * rt contraints.
++       */
++      if (rt_task(current))
++              delta = 0;
++
+       hrtimer_init_sleeper_on_stack(&t, clock_id, mode);
+       hrtimer_set_expires_range_ns(&t.timer, *expires, delta);
+       hrtimer_sleeper_start_expires(&t, mode);
+@@ -2312,7 +2319,7 @@ EXPORT_SYMBOL_GPL(schedule_hrtimeout_ran
+ /**
+  * schedule_hrtimeout_range - sleep until timeout
+  * @expires:  timeout value (ktime_t)
+- * @delta:    slack in expires timeout (ktime_t)
++ * @delta:    slack in expires timeout (ktime_t) for SCHED_OTHER tasks
+  * @mode:     timer mode
+  *
+  * Make the current task sleep until the given expiry time has
+@@ -2320,7 +2327,8 @@ EXPORT_SYMBOL_GPL(schedule_hrtimeout_ran
+  * the current task state has been set (see set_current_state()).
+  *
+  * The @delta argument gives the kernel the freedom to schedule the
+- * actual wakeup to a time that is both power and performance friendly.
++ * actual wakeup to a time that is both power and performance friendly
++ * for regular (non RT/DL) tasks.
+  * The kernel give the normal best effort behavior for "@expires+@delta",
+  * but may decide to fire the timer earlier, but no earlier than @expires.
+  *
index 9ef43cf28a71087e44c31086d3793394d358bd1a..c23151d1432db9d4673b3ea983bd6718c59d1947 100644 (file)
@@ -465,4 +465,5 @@ scripts-decode_stacktrace.sh-support-old-bash-versio.patch
 scripts-decode_stacktrace-demangle-rust-symbols.patch
 scripts-decode_stacktrace.sh-optionally-use-llvm-uti.patch
 netfilter-ipset-fix-performance-regression-in-swap-operation.patch
+hrtimer-ignore-slack-time-for-rt-tasks-in-schedule_hrtimeout_range.patch
 netfilter-ipset-missing-gc-cancellations-fixed.patch