diff options
-rw-r--r-- | arch/x86/xen/enlighten.c | 1 | ||||
-rw-r--r-- | arch/x86/xen/smp.c | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 15939e872db2..f091c80974c4 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -1692,7 +1692,6 @@ static int xen_hvm_cpu_notify(struct notifier_block *self, unsigned long action, | |||
1692 | case CPU_UP_PREPARE: | 1692 | case CPU_UP_PREPARE: |
1693 | xen_vcpu_setup(cpu); | 1693 | xen_vcpu_setup(cpu); |
1694 | if (xen_have_vector_callback) { | 1694 | if (xen_have_vector_callback) { |
1695 | xen_init_lock_cpu(cpu); | ||
1696 | if (xen_feature(XENFEAT_hvm_safe_pvclock)) | 1695 | if (xen_feature(XENFEAT_hvm_safe_pvclock)) |
1697 | xen_setup_timer(cpu); | 1696 | xen_setup_timer(cpu); |
1698 | } | 1697 | } |
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 9235842cd76a..c21b825ed056 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
@@ -709,6 +709,15 @@ static int xen_hvm_cpu_up(unsigned int cpu, struct task_struct *tidle) | |||
709 | WARN_ON(rc); | 709 | WARN_ON(rc); |
710 | if (!rc) | 710 | if (!rc) |
711 | rc = native_cpu_up(cpu, tidle); | 711 | rc = native_cpu_up(cpu, tidle); |
712 | |||
713 | /* | ||
714 | * We must initialize the slowpath CPU kicker _after_ the native | ||
715 | * path has executed. If we initialized it before none of the | ||
716 | * unlocker IPI kicks would reach the booting CPU as the booting | ||
717 | * CPU had not set itself 'online' in cpu_online_mask. That mask | ||
718 | * is checked when IPIs are sent (on HVM at least). | ||
719 | */ | ||
720 | xen_init_lock_cpu(cpu); | ||
712 | return rc; | 721 | return rc; |
713 | } | 722 | } |
714 | 723 | ||