We need the default timekeeping CPU to be able to receive IPIs sent from full dynticks CPUs when they wake up from full system idle state.
Therefore we need an entrypoint from the scheduler IPI so that the need to poll on timekeeping duty is re-evaluated from irq_exit(). In order to achieve this, lets take the scheduler IPI everytime as long as there is at least one full dynticks CPU around. Full dynticks CPUs are interested too in taking scheduler IPIs to reevaluate their tick. Signed-off-by: Frederic Weisbecker <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Steven Rostedt <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: John Stultz <[email protected]> Cc: Alex Shi <[email protected]> Cc: Kevin Hilman <[email protected]> --- kernel/sched/core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e85cda2..f46a7bc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1502,9 +1502,9 @@ void scheduler_ipi(void) if (tif_need_resched()) set_preempt_need_resched(); - if (llist_empty(&this_rq()->wake_list) - && !tick_nohz_full_cpu(smp_processor_id()) - && !got_nohz_idle_kick()) + if (llist_empty(&this_rq()->wake_list) && + !tick_nohz_full_enabled() && + !got_nohz_idle_kick()) return; /* -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

