diff options
Diffstat (limited to 'kernel/sched_fair.c')
| -rw-r--r-- | kernel/sched_fair.c | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 933f3d1b62ea..f4f6a8326dd0 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
| @@ -3869,13 +3869,26 @@ static void set_curr_task_fair(struct rq *rq) | |||
| 3869 | } | 3869 | } | 
| 3870 | 3870 | ||
| 3871 | #ifdef CONFIG_FAIR_GROUP_SCHED | 3871 | #ifdef CONFIG_FAIR_GROUP_SCHED | 
| 3872 | static void moved_group_fair(struct task_struct *p, int on_rq) | 3872 | static void task_move_group_fair(struct task_struct *p, int on_rq) | 
| 3873 | { | 3873 | { | 
| 3874 | struct cfs_rq *cfs_rq = task_cfs_rq(p); | 3874 | /* | 
| 3875 | 3875 | * If the task was not on the rq at the time of this cgroup movement | |
| 3876 | update_curr(cfs_rq); | 3876 | * it must have been asleep, sleeping tasks keep their ->vruntime | 
| 3877 | * absolute on their old rq until wakeup (needed for the fair sleeper | ||
| 3878 | * bonus in place_entity()). | ||
| 3879 | * | ||
| 3880 | * If it was on the rq, we've just 'preempted' it, which does convert | ||
| 3881 | * ->vruntime to a relative base. | ||
| 3882 | * | ||
| 3883 | * Make sure both cases convert their relative position when migrating | ||
| 3884 | * to another cgroup's rq. This does somewhat interfere with the | ||
| 3885 | * fair sleeper stuff for the first placement, but who cares. | ||
| 3886 | */ | ||
| 3887 | if (!on_rq) | ||
| 3888 | p->se.vruntime -= cfs_rq_of(&p->se)->min_vruntime; | ||
| 3889 | set_task_rq(p, task_cpu(p)); | ||
| 3877 | if (!on_rq) | 3890 | if (!on_rq) | 
| 3878 | place_entity(cfs_rq, &p->se, 1); | 3891 | p->se.vruntime += cfs_rq_of(&p->se)->min_vruntime; | 
| 3879 | } | 3892 | } | 
| 3880 | #endif | 3893 | #endif | 
| 3881 | 3894 | ||
| @@ -3927,7 +3940,7 @@ static const struct sched_class fair_sched_class = { | |||
| 3927 | .get_rr_interval = get_rr_interval_fair, | 3940 | .get_rr_interval = get_rr_interval_fair, | 
| 3928 | 3941 | ||
| 3929 | #ifdef CONFIG_FAIR_GROUP_SCHED | 3942 | #ifdef CONFIG_FAIR_GROUP_SCHED | 
| 3930 | .moved_group = moved_group_fair, | 3943 | .task_move_group = task_move_group_fair, | 
| 3931 | #endif | 3944 | #endif | 
| 3932 | }; | 3945 | }; | 
| 3933 | 3946 | ||
