diff options
-rw-r--r-- | kernel/sched.c | 9 | ||||
-rw-r--r-- | kernel/sched_fair.c | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index f3030709d826..61452e86c73b 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5522,8 +5522,15 @@ again: | |||
5522 | goto out; | 5522 | goto out; |
5523 | 5523 | ||
5524 | yielded = curr->sched_class->yield_to_task(rq, p, preempt); | 5524 | yielded = curr->sched_class->yield_to_task(rq, p, preempt); |
5525 | if (yielded) | 5525 | if (yielded) { |
5526 | schedstat_inc(rq, yld_count); | 5526 | schedstat_inc(rq, yld_count); |
5527 | /* | ||
5528 | * Make p's CPU reschedule; pick_next_entity takes care of | ||
5529 | * fairness. | ||
5530 | */ | ||
5531 | if (preempt && rq != p_rq) | ||
5532 | resched_task(p_rq->curr); | ||
5533 | } | ||
5527 | 5534 | ||
5528 | out: | 5535 | out: |
5529 | double_rq_unlock(rq, p_rq); | 5536 | double_rq_unlock(rq, p_rq); |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 1438e13cf8be..3f7ec9e27ee1 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -1987,10 +1987,6 @@ static bool yield_to_task_fair(struct rq *rq, struct task_struct *p, bool preemp | |||
1987 | /* Tell the scheduler that we'd really like pse to run next. */ | 1987 | /* Tell the scheduler that we'd really like pse to run next. */ |
1988 | set_next_buddy(se); | 1988 | set_next_buddy(se); |
1989 | 1989 | ||
1990 | /* Make p's CPU reschedule; pick_next_entity takes care of fairness. */ | ||
1991 | if (preempt) | ||
1992 | resched_task(rq->curr); | ||
1993 | |||
1994 | yield_task_fair(rq); | 1990 | yield_task_fair(rq); |
1995 | 1991 | ||
1996 | return true; | 1992 | return true; |