diff options
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.patch | 38 |
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(); |