|
@@ -576,24 +576,22 @@ void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
|
|
|
{
|
|
|
unsigned cpu;
|
|
|
unsigned int this_cpu = smp_processor_id();
|
|
|
+ int xen_vector = xen_map_vector(vector);
|
|
|
|
|
|
- if (!(num_online_cpus() > 1))
|
|
|
+ if (!(num_online_cpus() > 1) || (xen_vector < 0))
|
|
|
return;
|
|
|
|
|
|
for_each_cpu_and(cpu, mask, cpu_online_mask) {
|
|
|
if (this_cpu == cpu)
|
|
|
continue;
|
|
|
|
|
|
- xen_smp_send_call_function_single_ipi(cpu);
|
|
|
+ xen_send_IPI_one(cpu, xen_vector);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void xen_send_IPI_allbutself(int vector)
|
|
|
{
|
|
|
- int xen_vector = xen_map_vector(vector);
|
|
|
-
|
|
|
- if (xen_vector >= 0)
|
|
|
- xen_send_IPI_mask_allbutself(cpu_online_mask, xen_vector);
|
|
|
+ xen_send_IPI_mask_allbutself(cpu_online_mask, vector);
|
|
|
}
|
|
|
|
|
|
static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id)
|