Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
sched: scale sysctl_sched_shares_ratelimit with nr_cpus
sched: fix rt-bandwidth hotplug race
sched: fix the race between walk_tg_tree and sched_create_group

+6 -4
+5 -3
kernel/sched.c
··· 808 809 /* 810 * ratelimit for updating the group shares. 811 - * default: 0.5ms 812 */ 813 - const_debug unsigned int sysctl_sched_shares_ratelimit = 500000; 814 815 /* 816 * period over which we measure -rt task cpu usage in us. ··· 5786 sysctl_sched_latency = limit; 5787 5788 sysctl_sched_wakeup_granularity *= factor; 5789 } 5790 5791 #ifdef CONFIG_SMP ··· 8510 WARN_ON(!parent); /* root should already exist */ 8511 8512 tg->parent = parent; 8513 - list_add_rcu(&tg->siblings, &parent->children); 8514 INIT_LIST_HEAD(&tg->children); 8515 spin_unlock_irqrestore(&task_group_lock, flags); 8516 8517 return tg;
··· 808 809 /* 810 * ratelimit for updating the group shares. 811 + * default: 0.25ms 812 */ 813 + unsigned int sysctl_sched_shares_ratelimit = 250000; 814 815 /* 816 * period over which we measure -rt task cpu usage in us. ··· 5786 sysctl_sched_latency = limit; 5787 5788 sysctl_sched_wakeup_granularity *= factor; 5789 + 5790 + sysctl_sched_shares_ratelimit *= factor; 5791 } 5792 5793 #ifdef CONFIG_SMP ··· 8508 WARN_ON(!parent); /* root should already exist */ 8509 8510 tg->parent = parent; 8511 INIT_LIST_HEAD(&tg->children); 8512 + list_add_rcu(&tg->siblings, &parent->children); 8513 spin_unlock_irqrestore(&task_group_lock, flags); 8514 8515 return tg;
+1 -1
kernel/sched_rt.c
··· 298 struct rt_rq *iter = sched_rt_period_rt_rq(rt_b, i); 299 s64 diff; 300 301 - if (iter == rt_rq) 302 continue; 303 304 spin_lock(&iter->rt_runtime_lock);
··· 298 struct rt_rq *iter = sched_rt_period_rt_rq(rt_b, i); 299 s64 diff; 300 301 + if (iter == rt_rq || iter->rt_runtime == RUNTIME_INF) 302 continue; 303 304 spin_lock(&iter->rt_runtime_lock);