linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / mips / kernel / smp.c
index 298f82f..06ed907 100644 (file)
 #include <asm/mmu_context.h>
 #include <asm/smp.h>
 
-#ifdef CONFIG_MIPS_MT_SMTC
-#include <asm/mipsmtregs.h>
-#endif /* CONFIG_MIPS_MT_SMTC */
-
 cpumask_t phys_cpu_present_map;                /* Bitmask of available CPUs */
 volatile cpumask_t cpu_callin_map;     /* Bitmask of started secondaries */
 cpumask_t cpu_online_map;              /* Bitmask of currently online CPUs */
@@ -89,10 +85,6 @@ asmlinkage void start_secondary(void)
 {
        unsigned int cpu;
 
-#ifdef CONFIG_MIPS_MT_SMTC
-       /* Only do cpu_probe for first TC of CPU */
-       if ((read_c0_tcbind() & TCBIND_CURTC) == 0)
-#endif /* CONFIG_MIPS_MT_SMTC */
        cpu_probe();
        cpu_report();
        per_cpu_trap_init();
@@ -175,8 +167,8 @@ int smp_call_function (void (*func) (void *info), void *info, int retry,
        mb();
 
        /* Send a message to all other CPUs and wait for them to respond */
-       for_each_online_cpu(i)
-               if (i != cpu)
+       for (i = 0; i < NR_CPUS; i++)
+               if (cpu_online(i) && i != cpu)
                        core_send_ipi(i, SMP_CALL_FUNCTION);
 
        /* Wait for response */
@@ -187,13 +179,11 @@ int smp_call_function (void (*func) (void *info), void *info, int retry,
        if (wait)
                while (atomic_read(&data.finished) != cpus)
                        barrier();
-       call_data = NULL;
        spin_unlock(&smp_call_lock);
 
        return 0;
 }
 
-
 void smp_call_function_interrupt(void)
 {
        void (*func) (void *info) = call_data->func;
@@ -247,9 +237,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
        current_thread_info()->cpu = 0;
        smp_tune_scheduling();
        plat_prepare_cpus(max_cpus);
-#ifndef CONFIG_HOTPLUG_CPU
-       cpu_present_map = cpu_possible_map;
-#endif
 }
 
 /* preload SMP state for boot cpu */
@@ -445,7 +432,7 @@ static int __init topology_init(void)
        int cpu;
        int ret;
 
-       for_each_present_cpu(cpu) {
+       for_each_cpu(cpu) {
                ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL);
                if (ret)
                        printk(KERN_WARNING "topology_init: register_cpu %d "
@@ -459,3 +446,5 @@ subsys_initcall(topology_init);
 
 EXPORT_SYMBOL(flush_tlb_page);
 EXPORT_SYMBOL(flush_tlb_one);
+EXPORT_SYMBOL(cpu_data);
+EXPORT_SYMBOL(synchronize_irq);