blob: 2e8cd56c5a8feb559c9f2f3660a3e14007185c67 [file] [log] [blame]
Ben Guthrof447d562012-04-21 00:11:04 +08001#ifndef _XEN_SMP_H
2
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -04003#ifdef CONFIG_SMP
Ben Guthrof447d562012-04-21 00:11:04 +08004extern void xen_send_IPI_mask(const struct cpumask *mask,
5 int vector);
6extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
7 int vector);
8extern void xen_send_IPI_allbutself(int vector);
Ben Guthrof447d562012-04-21 00:11:04 +08009extern void xen_send_IPI_all(int vector);
10extern void xen_send_IPI_self(int vector);
11
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040012extern int xen_smp_intr_init(unsigned int cpu);
13extern void xen_smp_intr_free(unsigned int cpu);
Vitaly Kuznetsov04e95762017-03-14 18:35:42 +010014int xen_smp_intr_init_pv(unsigned int cpu);
15void xen_smp_intr_free_pv(unsigned int cpu);
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040016
Vitaly Kuznetsova52482d2017-03-14 18:35:45 +010017void xen_smp_send_reschedule(int cpu);
18void xen_smp_send_call_function_ipi(const struct cpumask *mask);
19void xen_smp_send_call_function_single_ipi(int cpu);
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040020#else /* CONFIG_SMP */
21
22static inline int xen_smp_intr_init(unsigned int cpu)
23{
24 return 0;
25}
26static inline void xen_smp_intr_free(unsigned int cpu) {}
Vitaly Kuznetsov04e95762017-03-14 18:35:42 +010027
28static inline int xen_smp_intr_init_pv(unsigned int cpu)
29{
30 return 0;
31}
32static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040033#endif /* CONFIG_SMP */
34
Ben Guthrof447d562012-04-21 00:11:04 +080035#endif