• Sean Christopherson's avatar
    KVM: x86: Move delivery of non-APICv interrupt into vendor code · 57dfd7b5
    Sean Christopherson authored
    Handle non-APICv interrupt delivery in vendor code, even though it means
    VMX and SVM will temporarily have duplicate code.  SVM's AVIC has a race
    condition that requires KVM to fall back to legacy interrupt injection
    _after_ the interrupt has been logged in the vIRR, i.e. to fix the race,
    SVM will need to open code the full flow anyways[*].  Refactor the code
    so that the SVM bug without introducing other issues, e.g. SVM would
    return "success" and thus invoke trace_kvm_apicv_accept_irq() even when
    delivery through the AVIC failed, and to opportunistically prepare for
    using KVM_X86_OP to fill each vendor's kvm_x86_ops struct, which will
    rely on the vendor function matching the kvm_x86_op pointer name.
    
    No functional change intended.
    
    [*] https://lore.kernel.org/all/20211213104634.199141-4-mlevitsk@redhat.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20220128005208.4008533-3-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    57dfd7b5
kvm-x86-ops.h 3.74 KB