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 <pbonzini@xxxxxxxxxx> > --- Reviewed-by: Radim Krčmář <rkrcmar@xxxxxxxxxx> > 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html