]> Pileus Git - ~andy/linux/commitdiff
KVM: VMX: extract kvm_cpu_vmxoff() from hardware_disable()
authorEduardo Habkost <ehabkost@redhat.com>
Mon, 17 Nov 2008 21:03:18 +0000 (19:03 -0200)
committerAvi Kivity <avi@redhat.com>
Wed, 31 Dec 2008 14:52:29 +0000 (16:52 +0200)
Along with some comments on why it is different from the core cpu_vmxoff()
function.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/vmx.c

index defaeeb3f75c7b88b78024dc78163aaf381274d0..f5958a7823f497563b6781b536c16c78ea43fe4e 100644 (file)
@@ -1091,13 +1091,22 @@ static void vmclear_local_vcpus(void)
                __vcpu_clear(vmx);
 }
 
-static void hardware_disable(void *garbage)
+
+/* Just like cpu_vmxoff(), but with the __kvm_handle_fault_on_reboot()
+ * tricks.
+ */
+static void kvm_cpu_vmxoff(void)
 {
-       vmclear_local_vcpus();
        asm volatile (__ex(ASM_VMX_VMXOFF) : : : "cc");
        write_cr4(read_cr4() & ~X86_CR4_VMXE);
 }
 
+static void hardware_disable(void *garbage)
+{
+       vmclear_local_vcpus();
+       kvm_cpu_vmxoff();
+}
+
 static __init int adjust_vmx_controls(u32 ctl_min, u32 ctl_opt,
                                      u32 msr, u32 *result)
 {