s390: new default configuration
[deliverable/linux.git] / arch / s390 / include / asm / smp.h
CommitLineData
1da177e4 1/*
a53c8fab 2 * Copyright IBM Corp. 1999, 2012
c20c89a6
HC
3 * Author(s): Denis Joseph Barrow,
4 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
5 * Heiko Carstens <heiko.carstens@de.ibm.com>,
1da177e4
LT
6 */
7#ifndef __ASM_SMP_H
8#define __ASM_SMP_H
9
e7c46c66
HC
10#include <asm/sigp.h>
11
c20c89a6 12#ifdef CONFIG_SMP
1da177e4 13
a0616cde 14#include <asm/lowcore.h>
2b67fc46 15
7b468488 16#define raw_smp_processor_id() (S390_lowcore.cpu_nr)
1da177e4 17
dbd70fb4 18extern struct mutex smp_cpu_state_mutex;
10ad34bc
MS
19extern unsigned int smp_cpu_mt_shift;
20extern unsigned int smp_cpu_mtid;
8b646bd7 21
8239c25f 22extern int __cpu_up(unsigned int cpu, struct task_struct *tidle);
dbd70fb4 23
ca9fc75a 24extern void arch_send_call_function_single_ipi(int cpu);
630cd046 25extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
ca9fc75a 26
8b646bd7
MS
27extern void smp_call_online_cpu(void (*func)(void *), void *);
28extern void smp_call_ipl_cpu(void (*func)(void *), void *);
2c2df118 29
8b646bd7
MS
30extern int smp_find_processor_id(u16 address);
31extern int smp_store_status(int cpu);
32extern int smp_vcpu_scheduled(int cpu);
33extern void smp_yield_cpu(int cpu);
50ab9a9a
HC
34extern void smp_cpu_set_polarization(int cpu, int val);
35extern int smp_cpu_get_polarization(int cpu);
d80512f8 36extern void smp_fill_possible_mask(void);
59b69787 37
2c2df118
HC
38#else /* CONFIG_SMP */
39
10ad34bc
MS
40#define smp_cpu_mtid 0
41
8b646bd7 42static inline void smp_call_ipl_cpu(void (*func)(void *), void *data)
2c2df118
HC
43{
44 func(data);
45}
46
8b646bd7 47static inline void smp_call_online_cpu(void (*func)(void *), void *data)
1943f53c 48{
8b646bd7 49 func(data);
1943f53c
MH
50}
51
0d0e471b 52static inline int smp_find_processor_id(u16 address) { return 0; }
29a877fa 53static inline int smp_store_status(int cpu) { return 0; }
8b646bd7
MS
54static inline int smp_vcpu_scheduled(int cpu) { return 1; }
55static inline void smp_yield_cpu(int cpu) { }
d80512f8 56static inline void smp_fill_possible_mask(void) { }
59b69787 57
f4192bf2
MH
58#endif /* CONFIG_SMP */
59
e7c46c66
HC
60static inline void smp_stop_cpu(void)
61{
62 u16 pcpu = stap();
63
64 for (;;) {
65 __pcpu_sigp(pcpu, SIGP_STOP, 0, NULL);
66 cpu_relax();
67 }
68}
69
1e489518
HC
70#ifdef CONFIG_HOTPLUG_CPU
71extern int smp_rescan_cpus(void);
da7f51c1 72extern void __noreturn cpu_die(void);
8b646bd7
MS
73extern void __cpu_die(unsigned int cpu);
74extern int __cpu_disable(void);
1e489518
HC
75#else
76static inline int smp_rescan_cpus(void) { return 0; }
da7f51c1 77static inline void cpu_die(void) { }
1e489518
HC
78#endif
79
c20c89a6 80#endif /* __ASM_SMP_H */
This page took 0.756437 seconds and 5 git commands to generate.