aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/smp.c')
-rw-r--r--arch/s390/kernel/smp.c33
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 */
499static void smp_ptlb_callback(void *info)
500{
501 __tlb_flush_local();
502}
503
504void smp_ptlb_all(void)
505{
506 on_each_cpu(smp_ptlb_callback, NULL, 1);
507}
508EXPORT_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