diff options
Diffstat (limited to 'arch/s390/kernel/smp.c')
-rw-r--r-- | arch/s390/kernel/smp.c | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index db8f1115a3bf..d140160c9aec 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -198,19 +198,11 @@ static int pcpu_alloc_lowcore(struct pcpu *pcpu, int cpu) | |||
198 | lc->panic_stack = panic_stack + PANIC_FRAME_OFFSET; | 198 | lc->panic_stack = panic_stack + PANIC_FRAME_OFFSET; |
199 | lc->cpu_nr = cpu; | 199 | lc->cpu_nr = cpu; |
200 | lc->spinlock_lockval = arch_spin_lockval(cpu); | 200 | lc->spinlock_lockval = arch_spin_lockval(cpu); |
201 | #ifndef CONFIG_64BIT | ||
202 | if (MACHINE_HAS_IEEE) { | ||
203 | lc->extended_save_area_addr = get_zeroed_page(GFP_KERNEL); | ||
204 | if (!lc->extended_save_area_addr) | ||
205 | goto out; | ||
206 | } | ||
207 | #else | ||
208 | if (MACHINE_HAS_VX) | 201 | if (MACHINE_HAS_VX) |
209 | lc->vector_save_area_addr = | 202 | lc->vector_save_area_addr = |
210 | (unsigned long) &lc->vector_save_area; | 203 | (unsigned long) &lc->vector_save_area; |
211 | if (vdso_alloc_per_cpu(lc)) | 204 | if (vdso_alloc_per_cpu(lc)) |
212 | goto out; | 205 | goto out; |
213 | #endif | ||
214 | lowcore_ptr[cpu] = lc; | 206 | lowcore_ptr[cpu] = lc; |
215 | pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, (u32)(unsigned long) lc); | 207 | pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, (u32)(unsigned long) lc); |
216 | return 0; | 208 | return 0; |
@@ -229,16 +221,7 @@ static void pcpu_free_lowcore(struct pcpu *pcpu) | |||
229 | { | 221 | { |
230 | pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, 0); | 222 | pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, 0); |
231 | lowcore_ptr[pcpu - pcpu_devices] = NULL; | 223 | lowcore_ptr[pcpu - pcpu_devices] = NULL; |
232 | #ifndef CONFIG_64BIT | ||
233 | if (MACHINE_HAS_IEEE) { | ||
234 | struct _lowcore *lc = pcpu->lowcore; | ||
235 | |||
236 | free_page((unsigned long) lc->extended_save_area_addr); | ||
237 | lc->extended_save_area_addr = 0; | ||
238 | } | ||
239 | #else | ||
240 | vdso_free_per_cpu(pcpu->lowcore); | 224 | vdso_free_per_cpu(pcpu->lowcore); |
241 | #endif | ||
242 | if (pcpu == &pcpu_devices[0]) | 225 | if (pcpu == &pcpu_devices[0]) |
243 | return; | 226 | return; |
244 | free_page(pcpu->lowcore->panic_stack-PANIC_FRAME_OFFSET); | 227 | free_page(pcpu->lowcore->panic_stack-PANIC_FRAME_OFFSET); |
@@ -492,22 +475,6 @@ void arch_send_call_function_single_ipi(int cpu) | |||
492 | pcpu_ec_call(pcpu_devices + cpu, ec_call_function_single); | 475 | pcpu_ec_call(pcpu_devices + cpu, ec_call_function_single); |
493 | } | 476 | } |
494 | 477 | ||
495 | #ifndef CONFIG_64BIT | ||
496 | /* | ||
497 | * this function sends a 'purge tlb' signal to another CPU. | ||
498 | */ | ||
499 | static void smp_ptlb_callback(void *info) | ||
500 | { | ||
501 | __tlb_flush_local(); | ||
502 | } | ||
503 | |||
504 | void smp_ptlb_all(void) | ||
505 | { | ||
506 | on_each_cpu(smp_ptlb_callback, NULL, 1); | ||
507 | } | ||
508 | EXPORT_SYMBOL(smp_ptlb_all); | ||
509 | #endif /* ! CONFIG_64BIT */ | ||
510 | |||
511 | /* | 478 | /* |
512 | * this function sends a 'reschedule' IPI to another CPU. | 479 | * this function sends a 'reschedule' IPI to another CPU. |
513 | * it goes straight through and wastes no time serializing | 480 | * it goes straight through and wastes no time serializing |