• Eric Anholt's avatar
    drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. · cdfbc41f
    Eric Anholt authored
    The IMR masking was a technique recommended for avoiding getting stuck with
    no interrupts generated again in MSI mode.  It kept new IIR bits from getting
    set between the IIR read and the IIR write, which would have otherwise
    prevented an MSI from ever getting generated again.  However, this caused a
    problem for vblank as the IMR mask would keep the pipe event interrupt from
    getting reflected in IIR, even after the IMR mask was brought back down.
    
    Instead, just check the state of IIR after we ack the interrupts we're going
    to handle, and restart if we didn't get IIR all the way to zero.
    Signed-off-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    cdfbc41f
i915_irq.c 14.5 KB