]> Git Repo - linux.git/commitdiff
xen: Do not enable PV IPIs when vector callback not present
authorStefano Stabellini <[email protected]>
Wed, 17 Aug 2011 13:15:00 +0000 (15:15 +0200)
committerKonrad Rzeszutek Wilk <[email protected]>
Mon, 22 Aug 2011 15:28:09 +0000 (11:28 -0400)
Fix regression for HVM case on older (<4.1.1) hypervisors caused by

  commit 99bbb3a84a99cd04ab16b998b20f01a72cfa9f4f
  Author: Stefano Stabellini <[email protected]>
  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: [email protected]
Signed-off-by: Stefan Bader <[email protected]>
Signed-off-by: Stefano Stabellini <[email protected]>
Tested-and-Reported-by: Stefan Bader <[email protected]>
Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
arch/x86/xen/smp.c

index b4533a86d7e410668e24033cae32d8382bf4111d..e79dbb95482b84f07f01506ca3692ae8ee63ca22 100644 (file)
@@ -521,8 +521,6 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
        native_smp_prepare_cpus(max_cpus);
        WARN_ON(xen_smp_intr_init(0));
 
-       if (!xen_have_vector_callback)
-               return;
        xen_init_lock_cpu(0);
        xen_init_spinlocks();
 }
@@ -546,6 +544,8 @@ static void xen_hvm_cpu_die(unsigned int cpu)
 
 void __init xen_hvm_smp_init(void)
 {
+       if (!xen_have_vector_callback)
+               return;
        smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
        smp_ops.smp_send_reschedule = xen_smp_send_reschedule;
        smp_ops.cpu_up = xen_hvm_cpu_up;
This page took 0.059698 seconds and 4 git commands to generate.