drm/i915: Suppress spurious underruns on gen2
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 29 Apr 2020 10:10:34 +0000 (13:10 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 30 Jun 2020 17:39:18 +0000 (20:39 +0300)
Often we seem to detect an underrun right after modeset on gen2.
It seems to be a spurious detection (potentially the pipe is still
in a wonky state when we enable the planes). An extra vblank wait
seems to cure it.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200429101034.8208-13-ville.syrjala@linux.intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
drivers/gpu/drm/i915/display/intel_display.c

index 4fdc9cc..182cef0 100644 (file)
@@ -7526,6 +7526,10 @@ static void i9xx_crtc_enable(struct intel_atomic_state *state,
        intel_crtc_vblank_on(new_crtc_state);
 
        intel_encoders_enable(state, crtc);
+
+       /* prevents spurious underruns */
+       if (IS_GEN(dev_priv, 2))
+               intel_wait_for_vblank(dev_priv, pipe);
 }
 
 static void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)