diff options
Diffstat (limited to 'arch/sparc/kernel')
| -rw-r--r-- | arch/sparc/kernel/leon_smp.c | 9 | ||||
| -rw-r--r-- | arch/sparc/kernel/smp_32.c | 10 | ||||
| -rw-r--r-- | arch/sparc/kernel/smp_64.c | 10 | ||||
| -rw-r--r-- | arch/sparc/kernel/sun4d_smp.c | 8 | ||||
| -rw-r--r-- | arch/sparc/kernel/sun4m_smp.c | 7 | 
5 files changed, 14 insertions, 30 deletions
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c index 160cac9c403..b34c93c351b 100644 --- a/arch/sparc/kernel/leon_smp.c +++ b/arch/sparc/kernel/leon_smp.c @@ -204,16 +204,11 @@ void __init leon_boot_cpus(void)  } -int __cpuinit leon_boot_one_cpu(int i) +int __cpuinit leon_boot_one_cpu(int i, struct task_struct *idle)  { - -	struct task_struct *p;  	int timeout; -	/* Cook up an idler for this guy. */ -	p = fork_idle(i); - -	current_set[i] = task_thread_info(p); +	current_set[i] = task_thread_info(idle);  	/* See trampoline.S:leon_smp_cpu_startup for details...  	 * Initialize the contexts table diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c index 1f397ae1102..9028566b3cd 100644 --- a/arch/sparc/kernel/smp_32.c +++ b/arch/sparc/kernel/smp_32.c @@ -413,8 +413,8 @@ void __init smp_prepare_boot_cpu(void)  int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)  { -	extern int __cpuinit smp4m_boot_one_cpu(int); -	extern int __cpuinit smp4d_boot_one_cpu(int); +	extern int __cpuinit smp4m_boot_one_cpu(int, struct task_struct *); +	extern int __cpuinit smp4d_boot_one_cpu(int, struct task_struct *);  	int ret=0;  	switch(sparc_cpu_model) { @@ -427,13 +427,13 @@ int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)  		BUG();  		break;  	case sun4m: -		ret = smp4m_boot_one_cpu(cpu); +		ret = smp4m_boot_one_cpu(cpu, tidle);  		break;  	case sun4d: -		ret = smp4d_boot_one_cpu(cpu); +		ret = smp4d_boot_one_cpu(cpu, tidle);  		break;  	case sparc_leon: -		ret = leon_boot_one_cpu(cpu); +		ret = leon_boot_one_cpu(cpu, tidle);  		break;  	case sun4e:  		printk("SUN4E\n"); diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 2f9948c4107..f591598d92f 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -343,21 +343,17 @@ extern unsigned long sparc64_cpu_startup;   */  static struct thread_info *cpu_new_thread = NULL; -static int __cpuinit smp_boot_one_cpu(unsigned int cpu) +static int __cpuinit smp_boot_one_cpu(unsigned int cpu, struct task_struct *idle)  {  	unsigned long entry =  		(unsigned long)(&sparc64_cpu_startup);  	unsigned long cookie =  		(unsigned long)(&cpu_new_thread); -	struct task_struct *p;  	void *descr = NULL;  	int timeout, ret; -	p = fork_idle(cpu); -	if (IS_ERR(p)) -		return PTR_ERR(p);  	callin_flag = 0; -	cpu_new_thread = task_thread_info(p); +	cpu_new_thread = task_thread_info(idle);  	if (tlb_type == hypervisor) {  #if defined(CONFIG_SUN_LDOMS) && defined(CONFIG_HOTPLUG_CPU) @@ -1229,7 +1225,7 @@ void __devinit smp_fill_in_sib_core_maps(void)  int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)  { -	int ret = smp_boot_one_cpu(cpu); +	int ret = smp_boot_one_cpu(cpu, tidle);  	if (!ret) {  		cpumask_set_cpu(cpu, &smp_commenced_mask); diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 540b2fec09f..4c11030dc1e 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c @@ -127,18 +127,14 @@ void __init smp4d_boot_cpus(void)  	local_flush_cache_all();  } -int __cpuinit smp4d_boot_one_cpu(int i) +int __cpuinit smp4d_boot_one_cpu(int i, struct task_struct *idle)  {  	unsigned long *entry = &sun4d_cpu_startup; -	struct task_struct *p;  	int timeout;  	int cpu_node;  	cpu_find_by_instance(i, &cpu_node, NULL); -	/* Cook up an idler for this guy. */ -	p = fork_idle(i); -	current_set[i] = task_thread_info(p); - +	current_set[i] = task_thread_info(idle);  	/*  	 * Initialize the contexts table  	 * Since the call to prom_startcpu() trashes the structure, diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c index 02db9a0412c..579427359d4 100644 --- a/arch/sparc/kernel/sun4m_smp.c +++ b/arch/sparc/kernel/sun4m_smp.c @@ -91,18 +91,15 @@ void __init smp4m_boot_cpus(void)  	local_flush_cache_all();  } -int __cpuinit smp4m_boot_one_cpu(int i) +int __cpuinit smp4m_boot_one_cpu(int i, struct task_struct *idle)  {  	unsigned long *entry = &sun4m_cpu_startup; -	struct task_struct *p;  	int timeout;  	int cpu_node;  	cpu_find_by_mid(i, &cpu_node); +	current_set[i] = task_thread_info(idle); -	/* Cook up an idler for this guy. */ -	p = fork_idle(i); -	current_set[i] = task_thread_info(p);  	/* See trampoline.S for details... */  	entry += ((i - 1) * 3);  |