From 300cff88b010d911171703f9e2805c56ed401731 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 25 Nov 2008 02:35:13 +1030 Subject: [PATCH] --- yaml --- r: 125330 b: refs/heads/master c: 0e3900e6d3b04c44737ebc505604dcd8ed30e354 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 1 + trunk/kernel/sched_rt.c | 13 +++++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 6723c372432d..303f8c04ca96 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 24600ce89a819a8f2fb4fd69fd777218a82ade20 +refs/heads/master: 0e3900e6d3b04c44737ebc505604dcd8ed30e354 diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 94fa333c1e7c..f2be61870030 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -8018,6 +8018,7 @@ void __init sched_init_smp(void) free_cpumask_var(non_isolated_cpus); alloc_cpumask_var(&fallback_doms, GFP_KERNEL); + init_sched_rt_class(); } #else void __init sched_init_smp(void) diff --git a/trunk/kernel/sched_rt.c b/trunk/kernel/sched_rt.c index 1fa13624293e..1f0e99d1a8ce 100644 --- a/trunk/kernel/sched_rt.c +++ b/trunk/kernel/sched_rt.c @@ -962,7 +962,7 @@ static struct task_struct *pick_next_highest_task_rt(struct rq *rq, int cpu) return next; } -static DEFINE_PER_CPU(cpumask_t, local_cpu_mask); +static DEFINE_PER_CPU(cpumask_var_t, local_cpu_mask); static inline int pick_optimal_cpu(int this_cpu, cpumask_t *mask) { @@ -982,7 +982,7 @@ static inline int pick_optimal_cpu(int this_cpu, cpumask_t *mask) static int find_lowest_rq(struct task_struct *task) { struct sched_domain *sd; - cpumask_t *lowest_mask = &__get_cpu_var(local_cpu_mask); + cpumask_t *lowest_mask = __get_cpu_var(local_cpu_mask); int this_cpu = smp_processor_id(); int cpu = task_cpu(task); @@ -1551,3 +1551,12 @@ static void print_rt_stats(struct seq_file *m, int cpu) rcu_read_unlock(); } #endif /* CONFIG_SCHED_DEBUG */ + +/* Note that this is never called for !SMP, but that's OK. */ +static inline void init_sched_rt_class(void) +{ + unsigned int i; + + for_each_possible_cpu(i) + alloc_cpumask_var(&per_cpu(local_cpu_mask, i), GFP_KERNEL); +}