Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd2ac4f4 authored by Frederic Weisbecker's avatar Frederic Weisbecker
Browse files

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
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -1574,9 +1574,7 @@ void scheduler_ipi(void)
	 */
	preempt_fold_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) && !got_nohz_idle_kick())
		return;

	/*
@@ -1593,7 +1591,6 @@ void scheduler_ipi(void)
	 * somewhat pessimize the simple resched case.
	 */
	irq_enter();
	tick_nohz_full_check();
	sched_ttwu_pending();

	/*
+1 −1
Original line number Diff line number Diff line
@@ -1223,7 +1223,7 @@ static inline void add_nr_running(struct rq *rq, unsigned count)
		if (tick_nohz_full_cpu(rq->cpu)) {
			/* Order rq->nr_running write against the IPI */
			smp_wmb();
			smp_send_reschedule(rq->cpu);
			tick_nohz_full_kick_cpu(rq->cpu);
		}
       }
#endif