• Oscar Mateo's avatar
    drm/i915/vlv: Ack interrupts before handling them (VLV) · 3ff60f89
    Oscar Mateo authored
    Otherwise, we might receive a new interrupt before we have time to
    ack the first one, eventually missing it.
    
    Without an atomic XCHG operation with mmio space, this patch merely
    reduces the window in which we can miss an interrupt (especially when
    you consider how heavyweight the I915_READ/I915_WRITE operations are).
    
    Notice that, before clearing a port-sourced interrupt in the IIR, the
    corresponding interrupt source status in the PORT_HOTPLUG_STAT must be
    cleared.
    
    Spotted by Bob Beckett <robert.beckett@intel.com>.
    
    v2:
    - Reorder the IIR clearing to reduce the window even further.
    - Add warning to commit message and comments to the code as per Chris
      Wilson's request.
    - Imre Deak pointed out that the pipe underrun flag might not be signaled
      in IIR, so do not make valleyview_pipestat_irq_handler depend on it.
    
    v3: Improve the source code comment.
    Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
    Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    3ff60f89
i915_irq.c 127 KB