• Imre Deak's avatar
    drm/i915: fix race when clearing RPS IIR bits · 58072ccb
    Imre Deak authored
    When disabling RPS interrupts there is a race where we disable RPS
    inerrupts while the interrupt handler is running and the handler has
    already latched the pending RPS interrupt from the master IIR register.
    Afterwards the disabling path clears the PM IIR bits, making the state
    of pending interrupts inconsistent from the interrupt handler's point of
    view. This triggers the following warning: "The master control interrupt
    lied (PM)!".
    
    To fix this make sure that any running interrupt handler (which may
    have already latched the master IIR) finishes before clearing the IIR
    bits.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87347Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    58072ccb
i915_irq.c 125 KB