• Mark McLoughlin's avatar
    KVM: fix handling of ACK from shared guest IRQ · defaf158
    Mark McLoughlin authored
    If an assigned device shares a guest irq with an emulated
    device then we currently interpret an ack generated by the
    emulated device as originating from the assigned device
    leading to e.g. "Unbalanced enable for IRQ 4347" from the
    enable_irq() in kvm_assigned_dev_ack_irq().
    
    The fix is fairly simple - don't enable the physical device
    irq unless it was previously disabled.
    
    Of course, this can still lead to a situation where a
    non-assigned device ACK can cause the physical device irq to
    be reenabled before the device was serviced. However, being
    level sensitive, the interrupt will merely be regenerated.
    Signed-off-by: default avatarMark McLoughlin <markmc@redhat.com>
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    defaf158
kvm_main.c 51.6 KB