Commit fd2ac4f4 authored by Frederic Weisbecker's avatar Frederic Weisbecker

nohz: Use nohz own full kick on 2nd task enqueue

Now that we have a nohz full remote kick based on irq work, lets use
it to notify a CPU that it's exiting single task mode.

This unbloats a bit the scheduler IPI that the nohz code was abusing
for its cool "callable anywhere/anytime" properties.
Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
parent 53c5fa16
...@@ -1574,9 +1574,7 @@ void scheduler_ipi(void) ...@@ -1574,9 +1574,7 @@ void scheduler_ipi(void)
*/ */
preempt_fold_need_resched(); preempt_fold_need_resched();
if (llist_empty(&this_rq()->wake_list) if (llist_empty(&this_rq()->wake_list) && !got_nohz_idle_kick())
&& !tick_nohz_full_cpu(smp_processor_id())
&& !got_nohz_idle_kick())
return; return;
/* /*
...@@ -1593,7 +1591,6 @@ void scheduler_ipi(void) ...@@ -1593,7 +1591,6 @@ void scheduler_ipi(void)
* somewhat pessimize the simple resched case. * somewhat pessimize the simple resched case.
*/ */
irq_enter(); irq_enter();
tick_nohz_full_check();
sched_ttwu_pending(); sched_ttwu_pending();
/* /*
......
...@@ -1223,7 +1223,7 @@ static inline void add_nr_running(struct rq *rq, unsigned count) ...@@ -1223,7 +1223,7 @@ static inline void add_nr_running(struct rq *rq, unsigned count)
if (tick_nohz_full_cpu(rq->cpu)) { if (tick_nohz_full_cpu(rq->cpu)) {
/* Order rq->nr_running write against the IPI */ /* Order rq->nr_running write against the IPI */
smp_wmb(); smp_wmb();
smp_send_reschedule(rq->cpu); tick_nohz_full_kick_cpu(rq->cpu);
} }
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment