diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-11-04 21:25:08 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-11-05 10:30:13 +0100 |
commit | d95f98d0691d3aba5e35850011946a08c9b36428 (patch) | |
tree | 51cef12b6ad712379b63b04bd5e16292e0bbe8f0 /kernel/sched_fair.c | |
parent | f4b6755fb37595da3630d1d6fc130ea6888cd48f (diff) | |
download | lwn-d95f98d0691d3aba5e35850011946a08c9b36428.tar.gz lwn-d95f98d0691d3aba5e35850011946a08c9b36428.zip |
sched: fix fair preempt check
Impact: fix cross-class preemption
Inter-class wakeup preemptions should go on class order.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched_fair.c')
-rw-r--r-- | kernel/sched_fair.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 6167336a2372..ebd6de8d17fd 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -1329,6 +1329,9 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int sync) return; } + if (unlikely(p->sched_class != &fair_sched_class)) + return; + if (unlikely(se == pse)) return; |