X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsh%2Fkernel%2Fsmp.c;h=dbebaddcfe394974686c833a39f837d562720fa5;hb=refs%2Fheads%2Fvserver;hp=ec6d54f05b26b25ae9d6f5ee08e540ebaeb2cb61;hpb=6a77f38946aaee1cd85eeec6cf4229b204c15071;p=linux-2.6.git diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index ec6d54f05..dbebaddcf 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c @@ -10,7 +10,6 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ -#include #include #include #include @@ -22,6 +21,7 @@ #include #include #include +#include #include #include @@ -34,14 +34,15 @@ * but is designed to be usable regardless if there's an MMU * present or not. */ -int smp_threads_ready = 0; struct sh_cpuinfo cpu_data[NR_CPUS]; extern void per_cpu_trap_init(void); cpumask_t cpu_possible_map; +EXPORT_SYMBOL(cpu_possible_map); + cpumask_t cpu_online_map; -unsigned long cache_decay_ticks = HZ / 100; +EXPORT_SYMBOL(cpu_online_map); static atomic_t cpus_booted = ATOMIC_INIT(0); /* These are defined by the board-specific code. */ @@ -102,7 +103,7 @@ int __cpu_up(unsigned int cpu) if (IS_ERR(tsk)) panic("Failed forking idle task for cpu %d\n", cpu); - tsk->thread_info->cpu = cpu; + task_thread_info(tsk)->cpu = cpu; cpu_set(cpu, cpu_online_map); @@ -111,7 +112,9 @@ int __cpu_up(unsigned int cpu) int start_secondary(void *unused) { - unsigned int cpu = smp_processor_id(); + unsigned int cpu; + + cpu = smp_processor_id(); atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; @@ -119,6 +122,7 @@ int start_secondary(void *unused) smp_store_cpu_info(cpu); __smp_slave_init(cpu); + preempt_disable(); per_cpu_trap_init(); atomic_inc(&cpus_booted); @@ -129,7 +133,6 @@ int start_secondary(void *unused) void __init smp_cpus_done(unsigned int max_cpus) { - smp_threads_ready = 1; smp_mb(); }