diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched_fair.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 8ea4c9b3e411..926491f7f803 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -479,13 +479,16 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
479 | if (initial && sched_feat(START_DEBIT)) | 479 | if (initial && sched_feat(START_DEBIT)) |
480 | vruntime += __sched_vslice(cfs_rq->nr_running + 1); | 480 | vruntime += __sched_vslice(cfs_rq->nr_running + 1); |
481 | 481 | ||
482 | if (!initial && sched_feat(NEW_FAIR_SLEEPERS)) { | 482 | if (!initial) { |
483 | s64 latency = cfs_rq->min_vruntime - se->last_min_vruntime; | 483 | if (sched_feat(NEW_FAIR_SLEEPERS)) { |
484 | if (latency < 0 || !cfs_rq->nr_running) | 484 | s64 latency = cfs_rq->min_vruntime - se->last_min_vruntime; |
485 | latency = 0; | 485 | if (latency < 0 || !cfs_rq->nr_running) |
486 | else | 486 | latency = 0; |
487 | latency = min_t(s64, latency, sysctl_sched_latency); | 487 | else |
488 | vruntime -= latency; | 488 | latency = min_t(s64, latency, sysctl_sched_latency); |
489 | vruntime -= latency; | ||
490 | } | ||
491 | vruntime = max(vruntime, se->vruntime); | ||
489 | } | 492 | } |
490 | 493 | ||
491 | se->vruntime = vruntime; | 494 | se->vruntime = vruntime; |