[PATCH 3/3] drm/i915: Use drm_vblank_on() to re-enable vblank interrupts
ville.syrjala at linux.intel.com
ville.syrjala at linux.intel.com
Thu Mar 6 08:13:32 PST 2014
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
Sprinkle drm_vblank_on() calls to the .crtc_enable() callbacks.
Also drop the drm_vblank_{pre,post}_modeset() calls since those
are now useless.
Testcase: igt/kms_flip/{dpms,modeset}-vs-vblank-race
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 7e8bfd8..87895dd 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3612,6 +3612,8 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
* happening.
*/
intel_wait_for_vblank(dev, intel_crtc->pipe);
+
+ drm_vblank_on(dev, pipe);
}
/* IPS only exists on ULT machines and is tied to pipe A. */
@@ -3637,6 +3639,8 @@ static void haswell_crtc_enable_planes(struct drm_crtc *crtc)
mutex_lock(&dev->struct_mutex);
intel_update_fbc(dev);
mutex_unlock(&dev->struct_mutex);
+
+ drm_vblank_on(dev, pipe);
}
static void haswell_crtc_disable_planes(struct drm_crtc *crtc)
@@ -4235,6 +4239,8 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
for_each_encoder_on_crtc(dev, crtc, encoder)
encoder->enable(encoder);
+
+ drm_vblank_on(dev, pipe);
}
static void i9xx_crtc_enable(struct drm_crtc *crtc)
@@ -4280,6 +4286,8 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
for_each_encoder_on_crtc(dev, crtc, encoder)
encoder->enable(encoder);
+
+ drm_vblank_on(dev, pipe);
}
static void i9xx_pfit_disable(struct intel_crtc *crtc)
@@ -7014,15 +7022,10 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
struct intel_encoder *encoder;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
struct drm_display_mode *mode = &intel_crtc->config.requested_mode;
- int pipe = intel_crtc->pipe;
int ret;
- drm_vblank_pre_modeset(dev, pipe);
-
ret = dev_priv->display.crtc_mode_set(crtc, x, y, fb);
- drm_vblank_post_modeset(dev, pipe);
-
if (ret != 0)
return ret;
--
1.8.3.2
More information about the dri-devel
mailing list