|
@@ -5,6 +5,7 @@
|
|
|
#include <linux/mutex.h>
|
|
|
#include <linux/spinlock.h>
|
|
|
#include <linux/stop_machine.h>
|
|
|
+#include <linux/tick.h>
|
|
|
|
|
|
#include "cpupri.h"
|
|
|
|
|
@@ -1106,6 +1107,16 @@ static inline u64 steal_ticks(u64 steal)
|
|
|
static inline void inc_nr_running(struct rq *rq)
|
|
|
{
|
|
|
rq->nr_running++;
|
|
|
+
|
|
|
+#ifdef CONFIG_NO_HZ_FULL
|
|
|
+ if (rq->nr_running == 2) {
|
|
|
+ if (tick_nohz_full_cpu(rq->cpu)) {
|
|
|
+ /* Order rq->nr_running write against the IPI */
|
|
|
+ smp_wmb();
|
|
|
+ smp_send_reschedule(rq->cpu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
static inline void dec_nr_running(struct rq *rq)
|