1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _XEN_SMP_H
3 
4 #ifdef CONFIG_SMP
5 extern void xen_send_IPI_mask(const struct cpumask *mask,
6 			      int vector);
7 extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
8 				int vector);
9 extern void xen_send_IPI_allbutself(int vector);
10 extern void xen_send_IPI_all(int vector);
11 extern void xen_send_IPI_self(int vector);
12 
13 extern int xen_smp_intr_init(unsigned int cpu);
14 extern void xen_smp_intr_free(unsigned int cpu);
15 int xen_smp_intr_init_pv(unsigned int cpu);
16 void xen_smp_intr_free_pv(unsigned int cpu);
17 
18 void xen_smp_cpus_done(unsigned int max_cpus);
19 
20 void xen_smp_send_reschedule(int cpu);
21 void xen_smp_send_call_function_ipi(const struct cpumask *mask);
22 void xen_smp_send_call_function_single_ipi(int cpu);
23 
24 void __noreturn xen_cpu_bringup_again(unsigned long stack);
25 
26 struct xen_common_irq {
27 	int irq;
28 	char *name;
29 };
30 #else /* CONFIG_SMP */
31 
xen_smp_intr_init(unsigned int cpu)32 static inline int xen_smp_intr_init(unsigned int cpu)
33 {
34 	return 0;
35 }
xen_smp_intr_free(unsigned int cpu)36 static inline void xen_smp_intr_free(unsigned int cpu) {}
37 
xen_smp_intr_init_pv(unsigned int cpu)38 static inline int xen_smp_intr_init_pv(unsigned int cpu)
39 {
40 	return 0;
41 }
xen_smp_intr_free_pv(unsigned int cpu)42 static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
43 #endif /* CONFIG_SMP */
44 
45 #endif
46