diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-12-10 05:20:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-10 12:55:42 -0500 |
commit | 571f6d2fb0b1c04798df783db2ba85e96bcce43d (patch) | |
tree | 09e90a5f4976ddfa35e93e90372413e2ef87060a | |
parent | ac7d550499e225efb51a53d0b00667f26b93bdff (diff) |
[PATCH] sched: avoid taking rq lock in wake_priority_sleeper
Avoid taking the request queue lock in wake_priority_sleeper if there are no
running processes.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Peter Williams <pwil3058@bigpond.net.au>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Cc: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/sched.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index f04add905bdf..fdd26fffaa20 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -2915,6 +2915,9 @@ static inline int wake_priority_sleeper(struct rq *rq) | |||
2915 | int ret = 0; | 2915 | int ret = 0; |
2916 | 2916 | ||
2917 | #ifdef CONFIG_SCHED_SMT | 2917 | #ifdef CONFIG_SCHED_SMT |
2918 | if (!rq->nr_running) | ||
2919 | return 0; | ||
2920 | |||
2918 | spin_lock(&rq->lock); | 2921 | spin_lock(&rq->lock); |
2919 | /* | 2922 | /* |
2920 | * If an SMT sibling task has been put to sleep for priority | 2923 | * If an SMT sibling task has been put to sleep for priority |