1 #ifndef _ASM_X86_MACH_DEFAULT_MACH_IPI_H
2 #define _ASM_X86_MACH_DEFAULT_MACH_IPI_H
4 /* Avoid include hell */
5 #define NMI_VECTOR 0x02
7 void default_send_IPI_mask_bitmask(const struct cpumask *mask, int vector);
8 void default_send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
9 void __default_send_IPI_shortcut(unsigned int shortcut, int vector);
11 extern int no_broadcast;
14 #include <asm/genapic.h>
16 static inline void default_send_IPI_mask(const struct cpumask *mask, int vector)
18 default_send_IPI_mask_bitmask(mask, vector);
20 void default_send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
23 static inline void __default_local_send_IPI_allbutself(int vector)
25 if (no_broadcast || vector == NMI_VECTOR)
26 apic->send_IPI_mask_allbutself(cpu_online_mask, vector);
28 __default_send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
31 static inline void __default_local_send_IPI_all(int vector)
33 if (no_broadcast || vector == NMI_VECTOR)
34 apic->send_IPI_mask(cpu_online_mask, vector);
36 __default_send_IPI_shortcut(APIC_DEST_ALLINC, vector);
40 static inline void default_send_IPI_allbutself(int vector)
43 * if there are no other CPUs in the system then we get an APIC send
44 * error if we try to broadcast, thus avoid sending IPIs in this case.
46 if (!(num_online_cpus() > 1))
49 __default_local_send_IPI_allbutself(vector);
52 static inline void default_send_IPI_all(int vector)
54 __default_local_send_IPI_all(vector);
58 #endif /* _ASM_X86_MACH_DEFAULT_MACH_IPI_H */