|
@@ -431,13 +431,13 @@ void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, unsigned long delta_exec);
|
|
|
* Scheduling class tree data structure manipulation methods:
|
|
|
*/
|
|
|
|
|
|
-static inline u64 max_vruntime(u64 min_vruntime, u64 vruntime)
|
|
|
+static inline u64 max_vruntime(u64 max_vruntime, u64 vruntime)
|
|
|
{
|
|
|
- s64 delta = (s64)(vruntime - min_vruntime);
|
|
|
+ s64 delta = (s64)(vruntime - max_vruntime);
|
|
|
if (delta > 0)
|
|
|
- min_vruntime = vruntime;
|
|
|
+ max_vruntime = vruntime;
|
|
|
|
|
|
- return min_vruntime;
|
|
|
+ return max_vruntime;
|
|
|
}
|
|
|
|
|
|
static inline u64 min_vruntime(u64 min_vruntime, u64 vruntime)
|
|
@@ -473,6 +473,7 @@ static void update_min_vruntime(struct cfs_rq *cfs_rq)
|
|
|
vruntime = min_vruntime(vruntime, se->vruntime);
|
|
|
}
|
|
|
|
|
|
+ /* ensure we never gain time by being placed backwards. */
|
|
|
cfs_rq->min_vruntime = max_vruntime(cfs_rq->min_vruntime, vruntime);
|
|
|
#ifndef CONFIG_64BIT
|
|
|
smp_wmb();
|