KVM: SVM: do not generate "external interrupt exit" if other exit is pending
Nested SVM checks for external interrupt after injecting nested exception. In case there is external interrupt pending the code generates "external interrupt exit" and overwrites previous exit info. If previously injected exception already generated exit it will be lost. Signed-off-by: Gleb Natapov <gleb@redhat.com> Acked-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
f4f5105087
commit
a0a07cd2c5
|
@ -1707,6 +1707,14 @@ static inline bool nested_svm_intr(struct vcpu_svm *svm)
|
|||
if (!(svm->vcpu.arch.hflags & HF_HIF_MASK))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* if vmexit was already requested (by intercepted exception
|
||||
* for instance) do not overwrite it with "external interrupt"
|
||||
* vmexit.
|
||||
*/
|
||||
if (svm->nested.exit_required)
|
||||
return false;
|
||||
|
||||
svm->vmcb->control.exit_code = SVM_EXIT_INTR;
|
||||
svm->vmcb->control.exit_info_1 = 0;
|
||||
svm->vmcb->control.exit_info_2 = 0;
|
||||
|
|
Loading…
Reference in New Issue