From: Rafael J. Wysocki Date: Thu, 9 Aug 2018 17:08:34 +0000 (+0200) Subject: sched: idle: Avoid retaining the tick when it has been stopped X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7059b36636beab57c3c43c62104483e5449bee95;p=linux.git sched: idle: Avoid retaining the tick when it has been stopped If the tick has been stopped already, but the governor has not asked to stop it (which it can do sometimes), the idle loop should invoke tick_nohz_idle_stop_tick(), to let tick_nohz_stop_tick() take care of this case properly. Fixes: 554c8aa8ecad (sched: idle: Select idle state before stopping the tick) Cc: 4.17+ # 4.17+ Acked-by: Peter Zijlstra (Intel) Signed-off-by: Rafael J. Wysocki --- diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 1a3e9bddd17b6..16f84142f2f49 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -190,7 +190,7 @@ static void cpuidle_idle_call(void) */ next_state = cpuidle_select(drv, dev, &stop_tick); - if (stop_tick) + if (stop_tick || tick_nohz_tick_stopped()) tick_nohz_idle_stop_tick(); else tick_nohz_idle_retain_tick();