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