Merge branch 'linus' into cpus4096
[pandora-kernel.git] / arch / um / kernel / smp.c
index 759b070..be2d50c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
+ * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
  * Licensed under the GPL
  */
 
@@ -21,8 +21,6 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 #include "asm/smp.h"
 #include "asm/processor.h"
 #include "asm/spinlock.h"
-#include "user_util.h"
-#include "kern_util.h"
 #include "kern.h"
 #include "irq_user.h"
 #include "os.h"
@@ -57,12 +55,12 @@ void smp_send_stop(void)
        int i;
 
        printk(KERN_INFO "Stopping all CPUs...");
-       for(i = 0; i < num_online_cpus(); i++){
-               if(i == current_thread->cpu)
+       for (i = 0; i < num_online_cpus(); i++) {
+               if (i == current_thread->cpu)
                        continue;
                os_write_file(cpu_data[i].ipi_pipe[1], "S", 1);
        }
-       printk("done\n");
+       printk(KERN_CONT "done\n");
 }
 
 static cpumask_t smp_commenced_mask = CPU_MASK_NONE;
@@ -73,15 +71,14 @@ static int idle_proc(void *cpup)
        int cpu = (int) cpup, err;
 
        err = os_pipe(cpu_data[cpu].ipi_pipe, 1, 1);
-       if(err < 0)
+       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],
-                    current->thread.mode.tt.extern_pid);
+       os_set_fd_async(cpu_data[cpu].ipi_pipe[0]);
 
        wmb();
        if (cpu_test_and_set(cpu, cpu_callin_map)) {
-               printk("huh, CPU#%d already present??\n", cpu);
+               printk(KERN_ERR "huh, CPU#%d already present??\n", cpu);
                BUG();
        }
 
@@ -90,18 +87,17 @@ static int idle_proc(void *cpup)
 
        cpu_set(cpu, cpu_online_map);
        default_idle();
-       return(0);
+       return 0;
 }
 
 static struct task_struct *idle_thread(int cpu)
 {
        struct task_struct *new_task;
-       unsigned char c;
 
-        current->thread.request.u.thread.proc = idle_proc;
-        current->thread.request.u.thread.arg = (void *) cpu;
+       current->thread.request.u.thread.proc = idle_proc;
+       current->thread.request.u.thread.arg = (void *) cpu;
        new_task = fork_idle(cpu);
-       if(IS_ERR(new_task))
+       if (IS_ERR(new_task))
                panic("copy_process failed in idle_thread, error = %ld",
                      PTR_ERR(new_task));
 
@@ -109,10 +105,8 @@ static struct task_struct *idle_thread(int cpu)
                          { .pid =      new_task->thread.mode.tt.extern_pid,
                            .task =     new_task } );
        idle_threads[cpu] = new_task;
-       CHOOSE_MODE(os_write_file(new_task->thread.mode.tt.switch_pipe[1], &c,
-                         sizeof(c)),
-                   ({ panic("skas mode doesn't support SMP"); }));
-       return(new_task);
+       panic("skas mode doesn't support SMP");
+       return new_task;
 }
 
 void smp_prepare_cpus(unsigned int maxcpus)
@@ -130,14 +124,13 @@ void smp_prepare_cpus(unsigned int maxcpus)
        cpu_set(me, cpu_callin_map);
 
        err = os_pipe(cpu_data[me].ipi_pipe, 1, 1);
-       if(err < 0)
+       if (err < 0)
                panic("CPU#0 failed to create IPI pipe, errno = %d", -err);
 
-       os_set_fd_async(cpu_data[me].ipi_pipe[0],
-                    current->thread.mode.tt.extern_pid);
+       os_set_fd_async(cpu_data[me].ipi_pipe[0]);
 
-       for(cpu = 1; cpu < ncpus; cpu++){
-               printk("Booting processor %d...\n", cpu);
+       for (cpu = 1; cpu < ncpus; cpu++) {
+               printk(KERN_INFO "Booting processor %d...\n", cpu);
 
                idle = idle_thread(cpu);
 
@@ -147,9 +140,8 @@ void smp_prepare_cpus(unsigned int maxcpus)
                while (waittime-- && !cpu_isset(cpu, cpu_callin_map))
                        cpu_relax();
 
-               if (cpu_isset(cpu, cpu_callin_map))
-                       printk("done\n");
-               else printk("failed\n");
+               printk(KERN_INFO "%s\n",
+                      cpu_isset(cpu, cpu_calling_map) ? "done" : "failed");
        }
 }
 
@@ -163,13 +155,13 @@ int __cpu_up(unsigned int cpu)
        cpu_set(cpu, smp_commenced_mask);
        while (!cpu_isset(cpu, cpu_online_map))
                mb();
-       return(0);
+       return 0;
 }
 
 int setup_profiling_timer(unsigned int multiplier)
 {
        printk(KERN_INFO "setup_profiling_timer\n");
-       return(0);
+       return 0;
 }
 
 void smp_call_function_slave(int cpu);
@@ -191,13 +183,14 @@ void IPI_handler(int cpu)
                        break;
 
                case 'S':
-                       printk("CPU#%d stopping\n", cpu);
-                       while(1)
+                       printk(KERN_INFO "CPU#%d stopping\n", cpu);
+                       while (1)
                                pause();
                        break;
 
                default:
-                       printk("CPU#%d received unknown IPI [%c]!\n", cpu, c);
+                       printk(KERN_ERR "CPU#%d received unknown IPI [%c]!\n",
+                              cpu, c);
                        break;
                }
        }
@@ -205,7 +198,7 @@ void IPI_handler(int cpu)
 
 int hard_smp_processor_id(void)
 {
-       return(pid_to_processor_id(os_getpid()));
+       return pid_to_processor_id(os_getpid());
 }
 
 static DEFINE_SPINLOCK(call_lock);
@@ -221,8 +214,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 wait)
+int smp_call_function(void (*_func)(void *info), void *_info, int wait)
 {
        int cpus = num_online_cpus() - 1;
        int i;
@@ -254,14 +246,3 @@ int smp_call_function(void (*_func)(void *info), void *_info, int nonatomic,
 }
 
 #endif
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-file-style: "linux"
- * End:
- */