|
@@ -662,10 +662,15 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
|
|
|
if (!initial) {
|
|
|
/* sleeps upto a single latency don't count. */
|
|
|
if (sched_feat(NEW_FAIR_SLEEPERS)) {
|
|
|
+ unsigned long thresh = sysctl_sched_latency;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * convert the sleeper threshold into virtual time
|
|
|
+ */
|
|
|
if (sched_feat(NORMALIZED_SLEEPER))
|
|
|
- vruntime -= calc_delta_weight(sysctl_sched_latency, se);
|
|
|
- else
|
|
|
- vruntime -= sysctl_sched_latency;
|
|
|
+ thresh = calc_delta_fair(thresh, se);
|
|
|
+
|
|
|
+ vruntime -= thresh;
|
|
|
}
|
|
|
|
|
|
/* ensure we never gain time by being placed backwards. */
|