All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Flush pending operations to the CRTC prior to modeset
@ 2012-09-20  8:56 Chris Wilson
  2012-09-20  9:17 ` Daniel Vetter
  0 siblings, 1 reply; 3+ messages in thread
From: Chris Wilson @ 2012-09-20  8:56 UTC (permalink / raw)
  To: intel-gfx

We need to wait for pending operations on the CRTC to retire before we
can modify the CRTC. For example, if userspace has queued a batch that
uses a WAIT_FOR_EVENT associated with the current FB, we can not modify
the pipe with that outstanding, as we may then prevent that
WAIT_FOR_EVENT from ever completing and so hanging the GPU. (Imagine a
scanline wait waiting for line 1024 and the pipe being adjusted to
600-line mode.) There is also the sequencing issue of the immediate
update versus a pending pageflip.

In both cases the function to serialise the modeset with the pending
operations existed but was simply not being called, or called after the
damage was already done.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_display.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 48de2b1..5527589 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2275,9 +2275,6 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 		return ret;
 	}
 
-	if (crtc->fb)
-		intel_finish_fb(crtc->fb);
-
 	ret = dev_priv->display.update_plane(crtc, fb, x, y);
 	if (ret) {
 		intel_unpin_fb_obj(to_intel_framebuffer(fb)->obj);
@@ -7475,6 +7472,9 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 	save_set.y = set->crtc->y;
 	save_set.fb = set->crtc->fb;
 
+	/* Synchronize pending operations before apply immediate changes */
+	intel_crtc_wait_for_pending_flips(set->crtc);
+
 	/* Compute whether we need a full modeset, only an fb base update or no
 	 * change at all. In the future we might also check whether only the
 	 * mode changed, e.g. for LVDS where we only change the panel fitter in
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-09-27 12:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-20  8:56 [PATCH] drm/i915: Flush pending operations to the CRTC prior to modeset Chris Wilson
2012-09-20  9:17 ` Daniel Vetter
2012-09-27 12:37   ` Ville Syrjälä

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.