@@ -13207,8 +13207,12 @@ static void intel_update_crtc(struct drm_crtc *crtc,
if (pipe_config->update_pipe && !pipe_config->enable_fbc)
intel_fbc_disable(intel_crtc);
- else if (new_plane_state)
+ else if (new_plane_state) {
+ /* Display WA #1200: GLK */
+ if (IS_GEMINILAKE(dev_priv))
+ intel_wait_for_vblank(dev_priv, intel_crtc->pipe);
intel_fbc_enable(intel_crtc, pipe_config, new_plane_state);
+ }
intel_begin_crtc_commit(crtc, old_crtc_state);
@@ -13419,6 +13423,10 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
dev_priv->display.crtc_disable(old_intel_crtc_state, state);
intel_crtc->active = false;
+ /* Display WA #1200: GLK */
+ if (IS_GEMINILAKE(dev_priv))
+ intel_wait_for_vblank(dev_priv,
+ intel_crtc->pipe);
intel_fbc_disable(intel_crtc);
intel_disable_shared_dpll(old_intel_crtc_state);