From 59c4f2feae82c6d7dc8b5f6a7599dd2b06d15648 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Thu, 17 Dec 2009 18:10:09 +0100 Subject: [PATCH] --- yaml --- r: 182504 b: refs/heads/master c: baa8c1102f0cd86e69c1497d61d2ee177e663663 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched_fair.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e0f828117673..86c2828541fa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 230059de77a4e0f6afba98073e73bc9fd471506e +refs/heads/master: baa8c1102f0cd86e69c1497d61d2ee177e663663 diff --git a/trunk/kernel/sched_fair.c b/trunk/kernel/sched_fair.c index 93fccbadde23..65d08207e925 100644 --- a/trunk/kernel/sched_fair.c +++ b/trunk/kernel/sched_fair.c @@ -2065,6 +2065,10 @@ static int move_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, */ if (idle == CPU_NEWLY_IDLE && this_rq->nr_running) break; + + if (raw_spin_is_contended(&this_rq->lock) || + raw_spin_is_contended(&busiest->lock)) + break; #endif } while (load_moved && max_load_move > total_load_moved);