SVM: do not generate "external interrupt exit" if other exit is pending
PATCH v2 1/1 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.
---
v1->v2
- Added comment
arch/x86/kvm/svm.c +8 -0
@@ -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 ;
--
Gleb.
Quoted 6 lines · Gleb Natapov
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 <[email protected]>
Quoted 26 lines
---
v1->v2
- Added commentarch/x86/kvm/svm.c +8
-1@@ -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 ; --Gleb.
Signature · 5 lines
AMD Operating System Research Center Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach General Managers: Alberto Bozzo, Andrew Bowd Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632
Marcelo Tosatti
AppliedQuoted 9 lines · Gleb Natapov
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 <[email protected]>---
v1->v2
- Added comment
Applied, thanks.