On Thu, 23 Apr 2020 at 17:41, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 23/04/20 11:35, Wanpeng Li wrote: > >> Ok, got it now. The problem is that deliver_posted_interrupt goes through > >> > >> if (!kvm_vcpu_trigger_posted_interrupt(vcpu, false)) > >> kvm_vcpu_kick(vcpu); > >> > >> Would it help to make the above > >> > >> if (vcpu != kvm_get_running_vcpu() && > >> !kvm_vcpu_trigger_posted_interrupt(vcpu, false)) > >> kvm_vcpu_kick(vcpu); > >> > >> ? If that is enough for the APICv case, it's good enough. > > We will not exit from vmx_vcpu_run to vcpu_enter_guest, so it will not > > help, right? > > Oh indeed---the call to sync_pir_to_irr is in vcpu_enter_guest. You can > add it to patch 3 right before "goto cont_run", since AMD does not need it. Just move kvm_x86_ops.sync_pir_to_irr(vcpu)? How about the set pir/on part for APICv and non-APICv part in fast_deliver_interrupt()? Wanpeng