On Wednesday 1 September 2010, Simon Farnsworth <simon.farnswo...@onelan.co.uk> wrote: > In an attempt to get to the bottom of bug #29798, Chris Wilson gave me > a patch that put some details in debugfs. With the clues gathered from > that patch, I was able to determine that the page flip is happening, > but that we're not seeing the IRQs we'd expect. > > Work around this by only permitting a pageflip to be outstanding for 3 > VBlank periods before we start examining the display registers to see > if the pageflip happened, but we weren't told about it. This converts > an apparent hang into a visual glitch. > And, as promised, it's buggy:
> diff --git a/drivers/gpu/drm/i915/i915_irq.c > b/drivers/gpu/drm/i915/i915_irq.c index 16861b8..893cd77 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -887,6 +887,54 @@ static void i915_handle_error(struct drm_device *dev, > bool wedged) queue_work(dev_priv->wq, &dev_priv->error_work); > } > > +static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) > +{ > + drm_i915_private_t *dev_priv = dev->dev_private; > + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; > + int plane = intel_crtc->plane; > + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); These two lines got swapped when I was checking various possible null pointers. I can send a new version if required. -- Simon Farnsworth Software Engineer ONELAN Limited http://www.onelan.com/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx