Merge airlied/drm-next into drm-misc-next
[linux-2.6-block.git] / drivers / gpu / drm / i915 / intel_display.c
index bb9c9c3c391fdc3a5494718250c1753cd3c6be31..e92fd14c06c711dc3bf6ace69f95f5dd986bac10 100644 (file)
@@ -12818,7 +12818,7 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc)
        struct drm_device *dev = crtc->base.dev;
 
        if (!dev->max_vblank_count)
-               return drm_accurate_vblank_count(&crtc->base);
+               return drm_crtc_accurate_vblank_count(&crtc->base);
 
        return dev->driver->get_vblank_counter(dev, crtc->pipe);
 }
@@ -13286,7 +13286,15 @@ static int intel_atomic_commit(struct drm_device *dev,
        if (INTEL_GEN(dev_priv) < 9)
                state->legacy_cursor_update = false;
 
-       drm_atomic_helper_swap_state(state, true);
+       ret = drm_atomic_helper_swap_state(state, true);
+       if (ret) {
+               i915_sw_fence_commit(&intel_state->commit_ready);
+
+               mutex_lock(&dev->struct_mutex);
+               drm_atomic_helper_cleanup_planes(dev, state);
+               mutex_unlock(&dev->struct_mutex);
+               return ret;
+       }
        dev_priv->wm.distrust_bios_wm = false;
        intel_shared_dpll_swap_state(state);
        intel_atomic_track_fbs(state);