Last time I looked, I thought the max() in place_entity() was fine and the
problem seemed to be in set_task_cpu() that was causing the negative
vruntimes:
if (likely(new_rq->cfs.min_vruntime))
p->se.vruntime -= old_rq->cfs.min_vruntime -
new_rq->cfs.min_vruntime;
I think it's fine we get rid of sync_vruntime(). I need to think more
about how to make global fairness work based on this--it seems to be more
complicated than if we had sync_vruntime().
tong
-