diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2011-01-05 06:48:09 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-01-05 06:47:30 -0500 |
commit | da7f51c11d5fedca9ba779ee220063ccb4f0a27e (patch) | |
tree | a8cd6d843e72128ad6bfef0f19ef601f27f56ba9 /arch/s390/include | |
parent | f230886b0b0f0ce604395481bea05f3c0ad8fc9e (diff) |
[S390] smp/idle: call init_idle() before starting a new cpu
Call init_idle() which (re-)initializes the idle task structure before
it gets used on a new cpu.
That way we can also get rid of the odd preempt_enable_no_resched()
call we have in the cpu offline path within cpu_idle(). That call
prevented preempt count imbalances between cpu hotplug operations.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/asm/smp.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h index edc03cb9cd79..045e009fc164 100644 --- a/arch/s390/include/asm/smp.h +++ b/arch/s390/include/asm/smp.h | |||
@@ -20,7 +20,6 @@ extern void machine_power_off_smp(void); | |||
20 | 20 | ||
21 | extern int __cpu_disable (void); | 21 | extern int __cpu_disable (void); |
22 | extern void __cpu_die (unsigned int cpu); | 22 | extern void __cpu_die (unsigned int cpu); |
23 | extern void cpu_die (void) __attribute__ ((noreturn)); | ||
24 | extern int __cpu_up (unsigned int cpu); | 23 | extern int __cpu_up (unsigned int cpu); |
25 | 24 | ||
26 | extern struct mutex smp_cpu_state_mutex; | 25 | extern struct mutex smp_cpu_state_mutex; |
@@ -71,8 +70,10 @@ static inline void smp_switch_to_ipl_cpu(void (*func)(void *), void *data) | |||
71 | 70 | ||
72 | #ifdef CONFIG_HOTPLUG_CPU | 71 | #ifdef CONFIG_HOTPLUG_CPU |
73 | extern int smp_rescan_cpus(void); | 72 | extern int smp_rescan_cpus(void); |
73 | extern void __noreturn cpu_die(void); | ||
74 | #else | 74 | #else |
75 | static inline int smp_rescan_cpus(void) { return 0; } | 75 | static inline int smp_rescan_cpus(void) { return 0; } |
76 | static inline void cpu_die(void) { } | ||
76 | #endif | 77 | #endif |
77 | 78 | ||
78 | #endif /* __ASM_SMP_H */ | 79 | #endif /* __ASM_SMP_H */ |