[Devel] [PATCH v2 -tip] sched/deadline: switched_to_dl() -- skip if task is current

Kirill Tkhai ktkhai at parallels.com
Mon Jan 27 23:26:01 PST 2014


v2: Changed comment

When p is current and it's not of dl class, then there are no other
dl taks in the rq. If we had had pushable tasks in some other rq,
they would have been pushed earlier. So, skip "p == rq->curr" case.

[This is confirmed by Juri Lelli and LKML was CC'ed, but
 unfotunately I can't find direct link on lkml.org]

Signed-off-by: Kirill Tkhai <ktkhai at parallels.com>
CC: Juri Lelli <juri.lelli at gmail.com>
CC: Peter Zijlstra <peterz at infradead.org>
CC: Ingo Molnar <mingo at kernel.org>
---
 kernel/sched/deadline.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index 0de2482..dd19d6d 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -1559,7 +1559,7 @@ static void switched_to_dl(struct rq *rq, struct task_struct *p)
 	if (unlikely(p->dl.dl_throttled))
 		return;
 
-	if (p->on_rq || rq->curr != p) {
+	if (p->on_rq && rq->curr != p) {
 #ifdef CONFIG_SMP
 		if (rq->dl.overloaded && push_dl_task(rq) && rq != task_rq(p))
 			/* Only reschedule if pushing failed */




More information about the Devel mailing list