diff options
author | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2010-12-02 12:55:10 -0500 |
---|---|---|
committer | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2011-02-25 11:43:06 -0500 |
commit | 99bbb3a84a99cd04ab16b998b20f01a72cfa9f4f (patch) | |
tree | 9ee6e3994e7fee1f3e4e5070c46673b940499daa /arch/x86/xen/enlighten.c | |
parent | 53d5522cad291a0e93a385e0594b6aea6b54a071 (diff) |
xen: PV on HVM: support PV spinlocks and IPIs
Initialize PV spinlocks on boot CPU right after native_smp_prepare_cpus
(that switch to APIC mode and initialize APIC routing); on secondary
CPUs on CPU_UP_PREPARE.
Enable the usage of event channels to send and receive IPIs when
running as a PV on HVM guest.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r-- | arch/x86/xen/enlighten.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 2f67e2ea222e..fe02574789c5 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -1330,6 +1330,8 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self, | |||
1330 | switch (action) { | 1330 | switch (action) { |
1331 | case CPU_UP_PREPARE: | 1331 | case CPU_UP_PREPARE: |
1332 | per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; | 1332 | per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; |
1333 | if (xen_have_vector_callback) | ||
1334 | xen_init_lock_cpu(cpu); | ||
1333 | break; | 1335 | break; |
1334 | default: | 1336 | default: |
1335 | break; | 1337 | break; |
@@ -1354,6 +1356,7 @@ static void __init xen_hvm_guest_init(void) | |||
1354 | 1356 | ||
1355 | if (xen_feature(XENFEAT_hvm_callback_vector)) | 1357 | if (xen_feature(XENFEAT_hvm_callback_vector)) |
1356 | xen_have_vector_callback = 1; | 1358 | xen_have_vector_callback = 1; |
1359 | xen_hvm_smp_init(); | ||
1357 | register_cpu_notifier(&xen_hvm_cpu_notifier); | 1360 | register_cpu_notifier(&xen_hvm_cpu_notifier); |
1358 | xen_unplug_emulated_devices(); | 1361 | xen_unplug_emulated_devices(); |
1359 | have_vcpu_info_placement = 0; | 1362 | have_vcpu_info_placement = 0; |