xen: Do not enable PV IPIs when vector callback not present

Fix regression for HVM case on older (<4.1.1) hypervisors caused by

commit 99bbb3a84a99cd04ab16b998b20f01a72cfa9f4f
Author: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Date: Thu Dec 2 17:55:10 2010 +0000

xen: PV on HVM: support PV spinlocks and IPIs

This change replaced the SMP operations with event based handlers without
taking into account that this only works when the hypervisor supports
callback vectors. This causes unexplainable hangs early on boot for
HVM guests with more than one CPU.

BugLink: http://bugs.launchpad.net/bugs/791850

CC: stable@kernel.org
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Tested-and-Reported-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

authored by Stefano Stabellini and committed by Konrad Rzeszutek Wilk 3c05c4be ccbcdf7c

Changed files
+2 -2
arch
x86
xen
+2 -2
arch/x86/xen/smp.c
··· 521 521 native_smp_prepare_cpus(max_cpus); 522 522 WARN_ON(xen_smp_intr_init(0)); 523 523 524 - if (!xen_have_vector_callback) 525 - return; 526 524 xen_init_lock_cpu(0); 527 525 xen_init_spinlocks(); 528 526 } ··· 544 546 545 547 void __init xen_hvm_smp_init(void) 546 548 { 549 + if (!xen_have_vector_callback) 550 + return; 547 551 smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus; 548 552 smp_ops.smp_send_reschedule = xen_smp_send_reschedule; 549 553 smp_ops.cpu_up = xen_hvm_cpu_up;