Pull only if the current task switches from DLS, since it was not preempted
by pushable tasks waiting on other runqueues.
Signed-off-by: Hillf Danton<dhillf@xxxxxxxxx>
---
--- a/kernel/sched_dl.c Mon Apr 9 19:39:56 2012
+++ b/kernel/sched_dl.c Tue Apr 10 21:23:52 2012
@@ -1466,12 +1466,7 @@ static void switched_from_dl(struct rq *
hrtimer_try_to_cancel(&p->dl.dl_timer);
#ifdef CONFIG_SMP
- /*
- * Since this might be the only -deadline task on the rq,
- * this is the right place to try to pull some other one
- * from an overloaded cpu, if any.
- */
- if (!rq->dl.dl_nr_running)
+ if (p == rq->curr)
pull_dl_task(rq);
#endif
}
--