sched: idle: Do not stop the tick before cpuidle_idle_call()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 15 Mar 2018 22:07:41 +0000 (23:07 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 5 Apr 2018 17:01:29 +0000 (19:01 +0200)
commited98c34919985a9f87c3edacb9a8d8c283c9e243
tree342bb5a1961b6c594a38706f7ed6a5048ae63f29
parent2aaf709a518d26563b80fd7a42379d7aa7ffed4a
sched: idle: Do not stop the tick before cpuidle_idle_call()

Make cpuidle_idle_call() decide whether or not to stop the tick.

First, the cpuidle_enter_s2idle() path deals with the tick (and with
the entire timekeeping for that matter) by itself and it doesn't need
the tick to be stopped beforehand.

Second, to address the issue with short idle duration predictions
by the idle governor after the tick has been stopped, it will be
necessary to change the ordering of cpuidle_select() with respect
to tick_nohz_idle_stop_tick().  To prepare for that, put a
tick_nohz_idle_stop_tick() call in the same branch in which
cpuidle_select() is called.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
kernel/sched/idle.c