diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-16 20:15:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-16 20:15:32 -0400 |
commit | c100548d4610f727b95faffd69cb54cb280cd114 (patch) | |
tree | 0add41ffba7ced1f4742a327684fdb2bb57148c8 /kernel | |
parent | 0473b7992943ee7b182aa4afeb602ba5d37d36e0 (diff) | |
parent | 55cd53404c5cc5fd94708232e3b4aa4a9388917b (diff) |
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
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched.c | 8 | ||||
-rw-r--r-- | kernel/sched_rt.c | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 95e6ad3c231d..9a1ddb84e26d 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -808,9 +808,9 @@ const_debug unsigned int sysctl_sched_nr_migrate = 32; | |||
808 | 808 | ||
809 | /* | 809 | /* |
810 | * ratelimit for updating the group shares. | 810 | * ratelimit for updating the group shares. |
811 | * default: 0.5ms | 811 | * default: 0.25ms |
812 | */ | 812 | */ |
813 | const_debug unsigned int sysctl_sched_shares_ratelimit = 500000; | 813 | unsigned int sysctl_sched_shares_ratelimit = 250000; |
814 | 814 | ||
815 | /* | 815 | /* |
816 | * period over which we measure -rt task cpu usage in us. | 816 | * period over which we measure -rt task cpu usage in us. |
@@ -5786,6 +5786,8 @@ static inline void sched_init_granularity(void) | |||
5786 | sysctl_sched_latency = limit; | 5786 | sysctl_sched_latency = limit; |
5787 | 5787 | ||
5788 | sysctl_sched_wakeup_granularity *= factor; | 5788 | sysctl_sched_wakeup_granularity *= factor; |
5789 | |||
5790 | sysctl_sched_shares_ratelimit *= factor; | ||
5789 | } | 5791 | } |
5790 | 5792 | ||
5791 | #ifdef CONFIG_SMP | 5793 | #ifdef CONFIG_SMP |
@@ -8508,8 +8510,8 @@ struct task_group *sched_create_group(struct task_group *parent) | |||
8508 | WARN_ON(!parent); /* root should already exist */ | 8510 | WARN_ON(!parent); /* root should already exist */ |
8509 | 8511 | ||
8510 | tg->parent = parent; | 8512 | tg->parent = parent; |
8511 | list_add_rcu(&tg->siblings, &parent->children); | ||
8512 | INIT_LIST_HEAD(&tg->children); | 8513 | INIT_LIST_HEAD(&tg->children); |
8514 | list_add_rcu(&tg->siblings, &parent->children); | ||
8513 | spin_unlock_irqrestore(&task_group_lock, flags); | 8515 | spin_unlock_irqrestore(&task_group_lock, flags); |
8514 | 8516 | ||
8515 | return tg; | 8517 | return tg; |
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index 6163e4cf885b..998ba54b4543 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c | |||
@@ -298,7 +298,7 @@ static void __disable_runtime(struct rq *rq) | |||
298 | struct rt_rq *iter = sched_rt_period_rt_rq(rt_b, i); | 298 | struct rt_rq *iter = sched_rt_period_rt_rq(rt_b, i); |
299 | s64 diff; | 299 | s64 diff; |
300 | 300 | ||
301 | if (iter == rt_rq) | 301 | if (iter == rt_rq || iter->rt_runtime == RUNTIME_INF) |
302 | continue; | 302 | continue; |
303 | 303 | ||
304 | spin_lock(&iter->rt_runtime_lock); | 304 | spin_lock(&iter->rt_runtime_lock); |