linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / um / kernel / smp.c
index 759b070..72113b0 100644 (file)
@@ -1,8 +1,9 @@
-/*
+/* 
  * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
  * Licensed under the GPL
  */
 
+#include "linux/config.h"
 #include "linux/percpu.h"
 #include "asm/pgalloc.h"
 #include "asm/tlb.h"
@@ -76,9 +77,9 @@ static int idle_proc(void *cpup)
        if(err < 0)
                panic("CPU#%d failed to create IPI pipe, err = %d", cpu, -err);
 
-       os_set_fd_async(cpu_data[cpu].ipi_pipe[0],
+       activate_ipi(cpu_data[cpu].ipi_pipe[0], 
                     current->thread.mode.tt.extern_pid);
-
        wmb();
        if (cpu_test_and_set(cpu, cpu_callin_map)) {
                printk("huh, CPU#%d already present??\n", cpu);
@@ -105,7 +106,7 @@ static struct task_struct *idle_thread(int cpu)
                panic("copy_process failed in idle_thread, error = %ld",
                      PTR_ERR(new_task));
 
-       cpu_tasks[cpu] = ((struct cpu_task)
+       cpu_tasks[cpu] = ((struct cpu_task) 
                          { .pid =      new_task->thread.mode.tt.extern_pid,
                            .task =     new_task } );
        idle_threads[cpu] = new_task;
@@ -133,15 +134,16 @@ void smp_prepare_cpus(unsigned int maxcpus)
        if(err < 0)
                panic("CPU#0 failed to create IPI pipe, errno = %d", -err);
 
-       os_set_fd_async(cpu_data[me].ipi_pipe[0],
+       activate_ipi(cpu_data[me].ipi_pipe[0],
                     current->thread.mode.tt.extern_pid);
 
        for(cpu = 1; cpu < ncpus; cpu++){
                printk("Booting processor %d...\n", cpu);
-
+               
                idle = idle_thread(cpu);
 
                init_idle(idle, cpu);
+               unhash_process(idle);
 
                waittime = 200000000;
                while (waittime-- && !cpu_isset(cpu, cpu_callin_map))
@@ -221,7 +223,7 @@ void smp_call_function_slave(int cpu)
        atomic_inc(&scf_finished);
 }
 
-int smp_call_function(void (*_func)(void *info), void *_info, int nonatomic,
+int smp_call_function(void (*_func)(void *info), void *_info, int nonatomic, 
                      int wait)
 {
        int cpus = num_online_cpus() - 1;