From: Kirill Tkhai Subject: [PATCH]sched/rt: Do not try to push tasks if pinned task switches to RT Date: Tue, 29 Jan 2013 00:23:50 +0400 Message-ID: <3019251359404630@web18f.yandex.ru> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: Steven Rostedt , Ingo Molnar , Peter Zijlstra , linux-rt-users To: "linux-kernel@vger.kernel.org" Return-path: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-rt-users.vger.kernel.org Just switched pinned task is not able to be pushed. If the rq had had several RT tasks before they have already been considered as candidates to be pushed (or pulled). Signed-off-by: Kirill V Tkhai CC: Steven Rostedt CC: Ingo Molnar CC: Peter Zijlstra CC: linux-rt-users --- kernel/sched/rt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 4e8f0f4..5f7d92b 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1925,9 +1925,9 @@ static void switched_to_rt(struct rq *rq, struct task_struct *p) */ if (p->on_rq && rq->curr != p) { #ifdef CONFIG_SMP - if (rq->rt.overloaded && push_rt_task(rq) && + if (rq->rt.overloaded && p->nr_cpus_allowed > 1 && /* Don't resched if we changed runqueues */ - rq != task_rq(p)) + push_rt_task(rq) && rq != task_rq(p)) check_resched = 0; #endif /* CONFIG_SMP */ if (check_resched && p->prio < rq->curr->prio)