summaryrefslogtreecommitdiffstats
path: root/kernel/sched_stoptask.c
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2010-10-31 12:37:04 +0100
committerIngo Molnar <mingo@elte.hu>2010-11-11 14:37:23 +0100
commit1e5a74059f9059d330744eac84873b1b99657008 (patch)
treef32f8ac76d5a6c49c1b4cd8f83155af00007fac0 /kernel/sched_stoptask.c
parentsched: Fix runnable condition for stoptask (diff)
downloadlinux-1e5a74059f9059d330744eac84873b1b99657008.tar.xz
linux-1e5a74059f9059d330744eac84873b1b99657008.zip
sched: Fix cross-sched-class wakeup preemption
Instead of dealing with sched classes inside each check_preempt_curr() implementation, pull out this logic into the generic wakeup preemption path. This fixes a hang in KVM (and others) where we are waiting for the stop machine thread to run ... Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Tested-by: Marcelo Tosatti <mtosatti@redhat.com> Tested-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <1288891946.2039.31.camel@laptop> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched_stoptask.c')
-rw-r--r--kernel/sched_stoptask.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched_stoptask.c b/kernel/sched_stoptask.c
index 755483b2a2ad..2bf6b47058c1 100644
--- a/kernel/sched_stoptask.c
+++ b/kernel/sched_stoptask.c
@@ -19,7 +19,7 @@ select_task_rq_stop(struct rq *rq, struct task_struct *p,
static void
check_preempt_curr_stop(struct rq *rq, struct task_struct *p, int flags)
{
- resched_task(rq->curr); /* we preempt everything */
+ /* we're never preempted */
}
static struct task_struct *pick_next_task_stop(struct rq *rq)