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/

Reply via email to