• Vitaly Kuznetsov's avatar
    KVM: x86: Check for pending interrupts when APICv is getting disabled · bca66dbc
    Vitaly Kuznetsov authored
    When APICv is active, interrupt injection doesn't raise KVM_REQ_EVENT
    request (see __apic_accept_irq()) as the required work is done by hardware.
    In case KVM_REQ_APICV_UPDATE collides with such injection, the interrupt
    may never get delivered.
    
    Currently, the described situation is hardly possible: all
    kvm_request_apicv_update() calls normally happen upon VM creation when
    no interrupts are pending. We are, however, going to move unconditional
    kvm_request_apicv_update() call from kvm_hv_activate_synic() to
    synic_update_vector() and without this fix 'hyperv_connections' test from
    kvm-unit-tests gets stuck on IPI delivery attempt right after configuring
    a SynIC route which triggers APICv disablement.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20210609150911.1471882c-4-vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    bca66dbc
x86.c 319 KB