diff options
Diffstat (limited to 'arch/x86/xen/smp.c')
-rw-r--r-- | arch/x86/xen/smp.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 368c290929fe..9235842cd76a 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
@@ -700,8 +700,15 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus) | |||
700 | static int xen_hvm_cpu_up(unsigned int cpu, struct task_struct *tidle) | 700 | static int xen_hvm_cpu_up(unsigned int cpu, struct task_struct *tidle) |
701 | { | 701 | { |
702 | int rc; | 702 | int rc; |
703 | rc = native_cpu_up(cpu, tidle); | 703 | /* |
704 | WARN_ON (xen_smp_intr_init(cpu)); | 704 | * xen_smp_intr_init() needs to run before native_cpu_up() |
705 | * so that IPI vectors are set up on the booting CPU before | ||
706 | * it is marked online in native_cpu_up(). | ||
707 | */ | ||
708 | rc = xen_smp_intr_init(cpu); | ||
709 | WARN_ON(rc); | ||
710 | if (!rc) | ||
711 | rc = native_cpu_up(cpu, tidle); | ||
705 | return rc; | 712 | return rc; |
706 | } | 713 | } |
707 | 714 | ||