Update to 3.4-final.
[linux-flexiantxendom0-3.2.10.git] / arch / x86 / kernel / apic / ipi-xen.c
1 #include <linux/cpumask.h>
2 #include <linux/interrupt.h>
3
4 #include <asm/smp.h>
5 #include <asm/ipi.h>
6
7 #ifdef CONFIG_SMP
8 #include <xen/evtchn.h>
9
10 void xen_send_IPI_mask_allbutself(const struct cpumask *cpumask, int vector)
11 {
12         unsigned int cpu, this_cpu = smp_processor_id();
13
14         WARN_ON(!cpumask_subset(cpumask, cpu_online_mask));
15         for_each_cpu_and(cpu, cpumask, cpu_online_mask)
16                 if (cpu != this_cpu)
17                         notify_remote_via_ipi(vector, cpu);
18 }
19
20 void xen_send_IPI_mask(const struct cpumask *cpumask, int vector)
21 {
22         unsigned int cpu;
23
24         WARN_ON(!cpumask_subset(cpumask, cpu_online_mask));
25         for_each_cpu_and(cpu, cpumask, cpu_online_mask)
26                 notify_remote_via_ipi(vector, cpu);
27 }
28
29 void xen_send_IPI_allbutself(int vector)
30 {
31         xen_send_IPI_mask_allbutself(cpu_online_mask, vector);
32 }
33
34 void xen_send_IPI_all(int vector)
35 {
36         xen_send_IPI_mask(cpu_online_mask, vector);
37 }
38
39 void xen_send_IPI_self(int vector)
40 {
41         notify_remote_via_ipi(vector, smp_processor_id());
42 }
43 #endif