blob: 87d3c76cba37a5ff108ac8a38a8718ce69473da4 [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
Ankur Aroraae039002017-06-02 17:06:02 -070017void xen_smp_cpus_done(unsigned int max_cpus);
18
Vitaly Kuznetsova52482d2017-03-14 18:35:45 +010019void xen_smp_send_reschedule(int cpu);
20void xen_smp_send_call_function_ipi(const struct cpumask *mask);
21void xen_smp_send_call_function_single_ipi(int cpu);
Vitaly Kuznetsov83b96792017-03-14 18:35:46 +010022
23struct xen_common_irq {
24 int irq;
25 char *name;
26};
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040027#else /* CONFIG_SMP */
28
29static inline int xen_smp_intr_init(unsigned int cpu)
30{
31 return 0;
32}
33static inline void xen_smp_intr_free(unsigned int cpu) {}
Vitaly Kuznetsov04e95762017-03-14 18:35:42 +010034
35static inline int xen_smp_intr_init_pv(unsigned int cpu)
36{
37 return 0;
38}
39static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
Boris Ostrovsky5fc509b2016-08-03 13:22:27 -040040#endif /* CONFIG_SMP */
41
Ben Guthrof447d562012-04-21 00:11:04 +080042#endif