aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/vmx.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 1ee63cae82cd..1cdfb5d7580a 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -5512,6 +5512,9 @@ static void nested_free_all_saved_vmcss(struct vcpu_vmx *vmx)
5512 free_loaded_vmcs(&vmx->vmcs01); 5512 free_loaded_vmcs(&vmx->vmcs01);
5513} 5513}
5514 5514
5515static void nested_vmx_failValid(struct kvm_vcpu *vcpu,
5516 u32 vm_instruction_error);
5517
5515/* 5518/*
5516 * Emulate the VMXON instruction. 5519 * Emulate the VMXON instruction.
5517 * Currently, we just remember that VMX is active, and do not save or even 5520 * Currently, we just remember that VMX is active, and do not save or even
@@ -5547,6 +5550,11 @@ static int handle_vmon(struct kvm_vcpu *vcpu)
5547 kvm_inject_gp(vcpu, 0); 5550 kvm_inject_gp(vcpu, 0);
5548 return 1; 5551 return 1;
5549 } 5552 }
5553 if (vmx->nested.vmxon) {
5554 nested_vmx_failValid(vcpu, VMXERR_VMXON_IN_VMX_ROOT_OPERATION);
5555 skip_emulated_instruction(vcpu);
5556 return 1;
5557 }
5550 5558
5551 INIT_LIST_HEAD(&(vmx->nested.vmcs02_pool)); 5559 INIT_LIST_HEAD(&(vmx->nested.vmcs02_pool));
5552 vmx->nested.vmcs02_num = 0; 5560 vmx->nested.vmcs02_num = 0;