From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: [PATCH] SVM: do not generate "external interrupt exit" if other exit is pending Date: Sun, 19 Sep 2010 18:41:27 +0200 Message-ID: <20100919164127.GC3008@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: joerg.roedel@amd.com, agraf@suse.de To: kvm@vger.kernel.org, avi@redhat.com, mtosatti@redhat.com Return-path: Received: from mx1.redhat.com ([209.132.183.28]:27094 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754814Ab0ISQle (ORCPT ); Sun, 19 Sep 2010 12:41:34 -0400 Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: 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 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 43f5558..1a1f86b 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1707,6 +1707,9 @@ static inline bool nested_svm_intr(struct vcpu_svm *svm) if (!(svm->vcpu.arch.hflags & HF_HIF_MASK)) return false; + 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.