• S
    KVM: VMX: Drop pointless PI.NDST update when blocking · 29802380
    Sean Christopherson 提交于
    Don't update Posted Interrupt's NDST, a.k.a. the target pCPU, in the
    pre-block path, as NDST is guaranteed to be up-to-date.  The comment
    about the vCPU being preempted during the update is simply wrong, as the
    update path runs with IRQs disabled (from before snapshotting vcpu->cpu,
    until after the update completes).
    
    Since commit 8b306e2f ("KVM: VMX: avoid double list add with VT-d
    posted interrupts", 2017-09-27) The vCPU can get preempted _before_
    the update starts, but not during.  And if the vCPU is preempted before,
    vmx_vcpu_pi_load() is responsible for updating NDST when the vCPU is
    scheduled back in.  In that case, the check against the wakeup vector in
    vmx_vcpu_pi_load() cannot be true as that would require the notification
    vector to have been set to the wakeup vector _before_ blocking.
    
    Opportunistically switch to using vcpu->cpu for the list/lock lookups,
    which do not need pre_pcpu since the same commit.
    Signed-off-by: NSean Christopherson <seanjc@google.com>
    Message-Id: <20211009021236.4122790-25-seanjc@google.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    29802380
posted_intr.c 8.5 KB