diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 9 |
1 files changed, 8 insertions, 1 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); |