aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/xen/smp.c10
-rw-r--r--arch/x86/xen/smp.h1
2 files changed, 4 insertions, 7 deletions
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 8ff37995d54e..fb44426fe931 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -576,24 +576,22 @@ void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
576{ 576{
577 unsigned cpu; 577 unsigned cpu;
578 unsigned int this_cpu = smp_processor_id(); 578 unsigned int this_cpu = smp_processor_id();
579 int xen_vector = xen_map_vector(vector);
579 580
580 if (!(num_online_cpus() > 1)) 581 if (!(num_online_cpus() > 1) || (xen_vector < 0))
581 return; 582 return;
582 583
583 for_each_cpu_and(cpu, mask, cpu_online_mask) { 584 for_each_cpu_and(cpu, mask, cpu_online_mask) {
584 if (this_cpu == cpu) 585 if (this_cpu == cpu)
585 continue; 586 continue;
586 587
587 xen_smp_send_call_function_single_ipi(cpu); 588 xen_send_IPI_one(cpu, xen_vector);
588 } 589 }
589} 590}
590 591
591void xen_send_IPI_allbutself(int vector) 592void xen_send_IPI_allbutself(int vector)
592{ 593{
593 int xen_vector = xen_map_vector(vector); 594 xen_send_IPI_mask_allbutself(cpu_online_mask, vector);
594
595 if (xen_vector >= 0)
596 xen_send_IPI_mask_allbutself(cpu_online_mask, xen_vector);
597} 595}
598 596
599static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id) 597static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id)
diff --git a/arch/x86/xen/smp.h b/arch/x86/xen/smp.h
index 8981a76d081a..c7c2d89efd76 100644
--- a/arch/x86/xen/smp.h
+++ b/arch/x86/xen/smp.h
@@ -5,7 +5,6 @@ extern void xen_send_IPI_mask(const struct cpumask *mask,
5extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask, 5extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
6 int vector); 6 int vector);
7extern void xen_send_IPI_allbutself(int vector); 7extern void xen_send_IPI_allbutself(int vector);
8extern void physflat_send_IPI_allbutself(int vector);
9extern void xen_send_IPI_all(int vector); 8extern void xen_send_IPI_all(int vector);
10extern void xen_send_IPI_self(int vector); 9extern void xen_send_IPI_self(int vector);
11 10