diff options
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/process.c | 8 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 1 |
2 files changed, 3 insertions, 6 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index b825b3e1cb1..c2fffb57d72 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -42,6 +42,7 @@ #include <asm/irq.h> #include <asm/timer.h> #include <asm/nmi.h> +#include <asm/smp.h> #include "entry.h" asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); @@ -76,13 +77,8 @@ unsigned long thread_saved_pc(struct task_struct *tsk) */ static void default_idle(void) { - /* CPU is going idle. */ -#ifdef CONFIG_HOTPLUG_CPU - if (cpu_is_offline(smp_processor_id())) { - preempt_enable_no_resched(); + if (cpu_is_offline(smp_processor_id())) cpu_die(); - } -#endif local_irq_disable(); if (need_resched()) { local_irq_enable(); diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 8e84b5af49b..10766be524e 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@ -575,6 +575,7 @@ int __cpuinit __cpu_up(unsigned int cpu) idle = c_idle.idle; current_set[cpu] = c_idle.idle; } + init_idle(idle, cpu); if (smp_alloc_lowcore(cpu)) return -ENOMEM; do { |