From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755017AbdBGRmk (ORCPT ); Tue, 7 Feb 2017 12:42:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33780 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752021AbdBGRmi (ORCPT ); Tue, 7 Feb 2017 12:42:38 -0500 Date: Tue, 7 Feb 2017 18:42:36 +0100 From: Radim =?utf-8?B?S3LEjW3DocWZ?= To: Paolo Bonzini Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Subject: Re: [PATCH 1/6] KVM: vmx: clear pending interrupts on KVM_SET_LAPIC Message-ID: <20170207174236.GA31091@potion> References: <1482164232-130035-1-git-send-email-pbonzini@redhat.com> <1482164232-130035-2-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1482164232-130035-2-git-send-email-pbonzini@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 07 Feb 2017 17:42:39 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2016-12-19 17:17+0100, Paolo Bonzini: > Pending interrupts might be in the PI descriptor when the > LAPIC is restored from an external state; we do not want > them to be injected. > > Signed-off-by: Paolo Bonzini > --- Reviewed-by: Radim Krčmář > arch/x86/kvm/lapic.c | 3 +-- > arch/x86/kvm/vmx.c | 9 +++++++++ > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > index 4dc02482faf7..5fa546e27b7e 100644 > --- a/arch/x86/kvm/lapic.c > +++ b/arch/x86/kvm/lapic.c > @@ -2185,8 +2185,7 @@ int kvm_apic_set_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s) > 1 : count_vectors(apic->regs + APIC_ISR); > apic->highest_isr_cache = -1; > if (vcpu->arch.apicv_active) { > - if (kvm_x86_ops->apicv_post_state_restore) > - kvm_x86_ops->apicv_post_state_restore(vcpu); > + kvm_x86_ops->apicv_post_state_restore(vcpu); > kvm_x86_ops->hwapic_irr_update(vcpu, > apic_find_highest_irr(apic)); > kvm_x86_ops->hwapic_isr_update(vcpu, > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 1ba7aaf6ae7f..661956caf162 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -8761,6 +8761,14 @@ static void vmx_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap) > vmcs_write64(EOI_EXIT_BITMAP3, eoi_exit_bitmap[3]); > } > > +static void vmx_apicv_post_state_restore(struct kvm_vcpu *vcpu) > +{ > + struct vcpu_vmx *vmx = to_vmx(vcpu); > + > + pi_clear_on(&vmx->pi_desc); > + memset(vmx->pi_desc.pir, 0, sizeof(vmx->pi_desc.pir)); > +} > + > static void vmx_complete_atomic_exit(struct vcpu_vmx *vmx) > { > u32 exit_intr_info; > @@ -11590,6 +11598,7 @@ static void vmx_setup_mce(struct kvm_vcpu *vcpu) > .get_enable_apicv = vmx_get_enable_apicv, > .refresh_apicv_exec_ctrl = vmx_refresh_apicv_exec_ctrl, > .load_eoi_exitmap = vmx_load_eoi_exitmap, > + .apicv_post_state_restore = vmx_apicv_post_state_restore, > .hwapic_irr_update = vmx_hwapic_irr_update, > .hwapic_isr_update = vmx_hwapic_isr_update, > .sync_pir_to_irr = vmx_sync_pir_to_irr, > -- > 1.8.3.1 > > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html