On Fri, May 30, 2014 at 05:16:35PM +0100, Chris Wilson wrote: > If we successfully confuse the hardware, and cause it to drop a queued > pageflip, we wait for 60s and issue a warning before continuing on with > the modeset. However, this leaves the pending pageflip still stuck > indefinitely. Pretend to userspace that it does complete, and let us > start afresh following the modeset. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_display.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 764b277e5937..54b69838e2de 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3329,9 +3329,21 @@ void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) > > WARN_ON(waitqueue_active(&dev_priv->pending_flip_queue)); > > - WARN_ON(wait_event_timeout(dev_priv->pending_flip_queue, > - !intel_crtc_has_pending_flip(crtc), > - 60*HZ) == 0); > + if (WARN_ON(wait_event_timeout(dev_priv->pending_flip_queue, > + !intel_crtc_has_pending_flip(crtc), > + 60*HZ) == 0)) { > + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > + unsigned long flags; > + > + spin_lock_irqsave(&dev->event_lock, flags); > + if (intel_crtc->unpin_work) { > + WARN_ONCE(1, "Removing stuck page flip\n"); > + drm_vblank_put(dev, intel_crtc->pipe); > + page_flip_completed(dev_priv, intel_crtc, intel_crtc->unpin_work); > + intel_crtc->unpin_work = NULL; > + } > + spin_unlock_irqrestore(&dev->event_lock, flags); > + } Seems like a decent idea. Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Though my comment (to the other patch) about moving drm_vblank_put() into page_flip_completed() still seems valid. > > mutex_lock(&dev->struct_mutex); > intel_finish_fb(crtc->primary->fb); > -- > 2.0.0.rc4 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx