diff options
author | David S. Miller <davem@davemloft.net> | 2014-11-21 22:28:24 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-21 22:28:24 -0500 |
commit | 1459143386c5d868c87903b8d433a52cffcf3e66 (patch) | |
tree | e7878a550aaf6a3af5e84f4258bbcc3bbdd20fef /kernel/sched/fair.c | |
parent | 53b15ef3c2a6bac8e3d9bb58c5689d731ed9593b (diff) | |
parent | 8a84e01e147f44111988f9d8ccd2eaa30215a0f2 (diff) | |
download | linux-1459143386c5d868c87903b8d433a52cffcf3e66.tar.gz linux-1459143386c5d868c87903b8d433a52cffcf3e66.tar.bz2 linux-1459143386c5d868c87903b8d433a52cffcf3e66.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ieee802154/fakehard.c
A bug fix went into 'net' for ieee802154/fakehard.c, which is removed
in 'net-next'.
Add build fix into the merge from Stephen Rothwell in openvswitch, the
logging macros take a new initial 'log' argument, a new call was added
in 'net' so when we merge that in here we have to explicitly add the
new 'log' arg to it else the build fails.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r-- | kernel/sched/fair.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 34baa60f8a7b..ef2b104b254c 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -726,6 +726,11 @@ static void update_curr(struct cfs_rq *cfs_rq) account_cfs_rq_runtime(cfs_rq, delta_exec); } +static void update_curr_fair(struct rq *rq) +{ + update_curr(cfs_rq_of(&rq->curr->se)); +} + static inline void update_stats_wait_start(struct cfs_rq *cfs_rq, struct sched_entity *se) { @@ -1180,6 +1185,13 @@ static void task_numa_compare(struct task_numa_env *env, raw_spin_unlock_irq(&dst_rq->lock); /* + * Because we have preemption enabled we can get migrated around and + * end try selecting ourselves (current == env->p) as a swap candidate. + */ + if (cur == env->p) + goto unlock; + + /* * "imp" is the fault differential for the source task between the * source and destination node. Calculate the total differential for * the source task and potential destination task. The more negative @@ -7949,6 +7961,8 @@ const struct sched_class fair_sched_class = { .get_rr_interval = get_rr_interval_fair, + .update_curr = update_curr_fair, + #ifdef CONFIG_FAIR_GROUP_SCHED .task_move_group = task_move_group_fair, #endif |