summaryrefslogtreecommitdiff
path: root/arch/alpha
diff options
context:
space:
mode:
authorJoao Martins <joao.m.martins@oracle.com>2019-11-11 17:20:10 +0000
committerPaolo Bonzini <pbonzini@redhat.com>2019-11-12 10:17:40 +0100
commit9482ae458b7ae1b47c76333592bbe013d47e579f (patch)
treed9b42638af4072a7b4fdcd478f26e0aec628b53e /arch/alpha
parentd9ff2744eea21aac43fafa22f6178541bfe2e3d8 (diff)
KVM: VMX: Consider PID.PIR to determine if vCPU has pending interrupts
Commit 17e433b54393 ("KVM: Fix leak vCPU's VMCS value into other pCPU") introduced vmx_dy_apicv_has_pending_interrupt() in order to determine if a vCPU have a pending posted interrupt. This routine is used by kvm_vcpu_on_spin() when searching for a a new runnable vCPU to schedule on pCPU instead of a vCPU doing busy loop. vmx_dy_apicv_has_pending_interrupt() determines if a vCPU has a pending posted interrupt solely based on PID.ON. However, when a vCPU is preempted, vmx_vcpu_pi_put() sets PID.SN which cause raised posted interrupts to only set bit in PID.PIR without setting PID.ON (and without sending notification vector), as depicted in VT-d manual section 5.2.3 "Interrupt-Posting Hardware Operation". Therefore, checking PID.ON is insufficient to determine if a vCPU has pending posted interrupts and instead we should also check if there is some bit set on PID.PIR if PID.SN=1. Fixes: 17e433b54393 ("KVM: Fix leak vCPU's VMCS value into other pCPU") Reviewed-by: Jagannathan Raman <jag.raman@oracle.com> Co-developed-by: Liran Alon <liran.alon@oracle.com> Signed-off-by: Liran Alon <liran.alon@oracle.com> Signed-off-by: Joao Martins <joao.m.martins@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/alpha')
0 files changed, 0 insertions, 0 deletions