diff -urNpd a/Makefile b/Makefile --- a/Makefile 2011-02-25 01:15:47.000000000 -0600 +++ b/Makefile 2011-02-25 00:18:55.000000000 -0600 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .29 +EXTRAVERSION = .29-vs2.3.0.36.29.6 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION* diff -urNpd a/kernel/sched.c b/kernel/sched.c --- a/kernel/sched.c 2011-02-25 01:15:47.000000000 -0600 +++ b/kernel/sched.c 2011-02-25 00:46:34.000000000 -0600 @@ -9949,6 +9949,10 @@ void __init sched_init(void) global_rt_period(), global_rt_runtime()); #endif /* CONFIG_RT_GROUP_SCHED */ +#ifdef CONFIG_FAIR_GROUP_SCHED + init_cfs_bandwidth(&init_task_group); +#endif + #ifdef CONFIG_CGROUP_SCHED list_add(&init_task_group.list, &task_groups); INIT_LIST_HEAD(&init_task_group.children); diff -urNpd a/kernel/sched_fair.c b/kernel/sched_fair.c --- a/kernel/sched_fair.c 2011-02-25 01:15:47.000000000 -0600 +++ b/kernel/sched_fair.c 2011-02-25 01:07:26.000000000 -0600 @@ -793,14 +793,25 @@ __update_curr(struct cfs_rq *cfs_rq, str update_min_vruntime(cfs_rq); } -static void update_curr(struct cfs_rq *cfs_rq) +static void update_curr_task(struct sched_entity *curr, + unsigned long delta_exec) +{ + struct task_struct *curtask = task_of(curr); + + trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime); + cpuacct_charge(curtask, delta_exec); + account_group_exec_runtime(curtask, delta_exec); +} + +static int update_curr_common(struct cfs_rq *cfs_rq, unsigned long *delta) { struct sched_entity *curr = cfs_rq->curr; - u64 now = rq_of(cfs_rq)->clock_task; + struct rq *rq = rq_of(cfs_rq); + u64 now = rq->clock_task; unsigned long delta_exec; if (unlikely(!curr)) - return; + return 1; /* * Get the amount of time the current task was running