mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 23:20:50 +07:00
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fix from Ingo Molnar: "This is a revert to fix an interactivity problem. The proper fixes for the problems that the reverted commit exposed are now in sched/core (consisting of 3 patches), but were too risky for v4.6 and will arrive in the v4.7 merge window" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Revert "sched/fair: Fix fairness issue on migration"
This commit is contained in:
commit
65643e3abe
@ -3188,25 +3188,17 @@ static inline void check_schedstat_required(void)
|
|||||||
static void
|
static void
|
||||||
enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||||
{
|
{
|
||||||
bool renorm = !(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_WAKING);
|
|
||||||
bool curr = cfs_rq->curr == se;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we're the current task, we must renormalise before calling
|
* Update the normalized vruntime before updating min_vruntime
|
||||||
* update_curr().
|
* through calling update_curr().
|
||||||
*/
|
*/
|
||||||
if (renorm && curr)
|
if (!(flags & ENQUEUE_WAKEUP) || (flags & ENQUEUE_WAKING))
|
||||||
se->vruntime += cfs_rq->min_vruntime;
|
se->vruntime += cfs_rq->min_vruntime;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update run-time statistics of the 'current'.
|
||||||
|
*/
|
||||||
update_curr(cfs_rq);
|
update_curr(cfs_rq);
|
||||||
|
|
||||||
/*
|
|
||||||
* Otherwise, renormalise after, such that we're placed at the current
|
|
||||||
* moment in time, instead of some random moment in the past.
|
|
||||||
*/
|
|
||||||
if (renorm && !curr)
|
|
||||||
se->vruntime += cfs_rq->min_vruntime;
|
|
||||||
|
|
||||||
enqueue_entity_load_avg(cfs_rq, se);
|
enqueue_entity_load_avg(cfs_rq, se);
|
||||||
account_entity_enqueue(cfs_rq, se);
|
account_entity_enqueue(cfs_rq, se);
|
||||||
update_cfs_shares(cfs_rq);
|
update_cfs_shares(cfs_rq);
|
||||||
@ -3222,7 +3214,7 @@ enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
|||||||
update_stats_enqueue(cfs_rq, se);
|
update_stats_enqueue(cfs_rq, se);
|
||||||
check_spread(cfs_rq, se);
|
check_spread(cfs_rq, se);
|
||||||
}
|
}
|
||||||
if (!curr)
|
if (se != cfs_rq->curr)
|
||||||
__enqueue_entity(cfs_rq, se);
|
__enqueue_entity(cfs_rq, se);
|
||||||
se->on_rq = 1;
|
se->on_rq = 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user