aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-06-06 04:45:59 -0400
committerEric Anholt <eric@anholt.net>2009-06-09 17:41:26 -0400
commit1f803ee5cea67d2387aeedb4b07e645a743729de (patch)
tree4eec806dcc444bec0482d3e67ba1d2f2e06c1e0b
parent5f26a2c7ad6eba97141e8372f3def282f934b169 (diff)
drm/i915: Call drm_vblank_post_modeset() on error paths.
Ensure that the drm_vblank_pre_modeset() is always balanced by drm_vblank_post_modeset() within intel_crtc_mode_set(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index c5c45827ca01..a87eeffc2c8d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1598,6 +1598,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
1598 ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock); 1598 ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
1599 if (!ok) { 1599 if (!ok) {
1600 DRM_ERROR("Couldn't find PLL settings for mode!\n"); 1600 DRM_ERROR("Couldn't find PLL settings for mode!\n");
1601 drm_vblank_post_modeset(dev, pipe);
1601 return -EINVAL; 1602 return -EINVAL;
1602 } 1603 }
1603 1604
@@ -1858,12 +1859,9 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
1858 1859
1859 /* Flush the plane changes */ 1860 /* Flush the plane changes */
1860 ret = intel_pipe_set_base(crtc, x, y, old_fb); 1861 ret = intel_pipe_set_base(crtc, x, y, old_fb);
1861 if (ret != 0)
1862 return ret;
1863
1864 drm_vblank_post_modeset(dev, pipe); 1862 drm_vblank_post_modeset(dev, pipe);
1865 1863
1866 return 0; 1864 return ret;
1867} 1865}
1868 1866
1869/** Loads the palette/gamma unit for the CRTC with the prepared values */ 1867/** Loads the palette/gamma unit for the CRTC with the prepared values */