|
@@ -1221,8 +1221,14 @@ static inline void add_nr_running(struct rq *rq, unsigned count)
|
|
|
#ifdef CONFIG_NO_HZ_FULL
|
|
|
if (prev_nr < 2 && rq->nr_running >= 2) {
|
|
|
if (tick_nohz_full_cpu(rq->cpu)) {
|
|
|
- /* Order rq->nr_running write against the IPI */
|
|
|
- smp_wmb();
|
|
|
+ /*
|
|
|
+ * Tick is needed if more than one task runs on a CPU.
|
|
|
+ * Send the target an IPI to kick it out of nohz mode.
|
|
|
+ *
|
|
|
+ * We assume that IPI implies full memory barrier and the
|
|
|
+ * new value of rq->nr_running is visible on reception
|
|
|
+ * from the target.
|
|
|
+ */
|
|
|
tick_nohz_full_kick_cpu(rq->cpu);
|
|
|
}
|
|
|
}
|