summaryrefslogtreecommitdiff
path: root/patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch')
-rw-r--r--patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch38
1 files changed, 0 insertions, 38 deletions
diff --git a/patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch b/patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch
deleted file mode 100644
index a10d1f9569d3..000000000000
--- a/patches/sched-Make-the-idle-timer-expire-always-in-hardirq-c.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Date: Mon, 6 Sep 2021 11:40:48 +0200
-Subject: [PATCH] sched: Make the idle timer expire always in hardirq context.
-
-The intel powerclamp driver will setup a per-CPU worker with RT
-priority. The worker will then invoke play_idle() in which it remains in
-the idle poll loop until it is stopped by the timer it started earlier.
-
-That timer needs to expire in hardirq context on PREEMPT_RT. Otherwise
-the timer will expire in ksoftirqd as a SOFT timer but that task won't
-be scheduled on the CPU because its priority is lower than the priority
-of the worker which is in the idle loop.
-
-Always expire the idle timer in hardirq context.
-
-Fixes:c1de45ca831ac ("sched/idle: Add support for tasks that inject idle")
-Reported-by: Thomas Gleixner <tglx@linutronix.de>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Link: https://lkml.kernel.org/r/20210906113034.jgfxrjdvxnjqgtmc@linutronix.de
----
- kernel/sched/idle.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/kernel/sched/idle.c
-+++ b/kernel/sched/idle.c
-@@ -379,10 +379,10 @@ void play_idle_precise(u64 duration_ns,
- cpuidle_use_deepest_state(latency_ns);
-
- it.done = 0;
-- hrtimer_init_on_stack(&it.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
-+ hrtimer_init_on_stack(&it.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
- it.timer.function = idle_inject_timer_fn;
- hrtimer_start(&it.timer, ns_to_ktime(duration_ns),
-- HRTIMER_MODE_REL_PINNED);
-+ HRTIMER_MODE_REL_PINNED_HARD);
-
- while (!READ_ONCE(it.done))
- do_idle();