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>
This commit is contained in:
committed by
Eric Anholt
parent
5f26a2c7ad
commit
1f803ee5ce
@@ -1598,6 +1598,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
|
|||||||
ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
|
ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
DRM_ERROR("Couldn't find PLL settings for mode!\n");
|
DRM_ERROR("Couldn't find PLL settings for mode!\n");
|
||||||
|
drm_vblank_post_modeset(dev, pipe);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1858,12 +1859,9 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
|
|||||||
|
|
||||||
/* Flush the plane changes */
|
/* Flush the plane changes */
|
||||||
ret = intel_pipe_set_base(crtc, x, y, old_fb);
|
ret = intel_pipe_set_base(crtc, x, y, old_fb);
|
||||||
if (ret != 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
drm_vblank_post_modeset(dev, pipe);
|
drm_vblank_post_modeset(dev, pipe);
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Loads the palette/gamma unit for the CRTC with the prepared values */
|
/** Loads the palette/gamma unit for the CRTC with the prepared values */
|
||||||
|
Reference in New Issue
Block a user