Messages in this thread Patch in this message | | | From | Wanpeng Li <> | Subject | [PATCH] KVM: VMX: Dont' deliver posted IRQ if vCPU == this vCPU and vCPU is IN_GUEST_MODE | Date | Thu, 6 Jan 2022 04:12:51 -0800 |
| |
From: Wanpeng Li <wanpengli@tencent.com>
Commit fdba608f15e2 (KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU) fixes wakeup event is missing when it is not from synchronous kvm context by dropping vcpu == running_vcpu checking completely. However, it will break the original goal to optimise timer fastpath, let's move the checking under vCPU is IN_GUEST_MODE to restore the performance.
Suggested-by: Chao Gao <chao.gao@intel.com> Signed-off-by: Wanpeng Li <wanpengli@tencent.com> --- arch/x86/kvm/vmx/vmx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index fe06b02..71e8afc 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -3932,7 +3932,8 @@ static inline void kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu, * which has no effect is safe here. */ - apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec); + if (vcpu != kvm_get_running_vcpu()) + apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec); return; } #endif -- 2.7.4
| |