Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > A call to wait for the GT to idle from inside the put_pages fallback is > prone to cause an uninterruptible livelock. As it does not provide > adequate serialisation with new requests, simply fallback to a trial s/trial/trivial > sleep. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 25 ++++++++++--------------- > 1 file changed, 10 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index c5ee1567f3d1..d2350a4c6606 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -55,22 +55,17 @@ int i915_gem_gtt_prepare_pages(struct drm_i915_gem_object *obj, > void i915_gem_gtt_finish_pages(struct drm_i915_gem_object *obj, > struct sg_table *pages) > { > - struct drm_i915_private *dev_priv = to_i915(obj->base.dev); > - struct device *kdev = &dev_priv->drm.pdev->dev; > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > - > - if (unlikely(ggtt->do_idle_maps)) { > - /* XXX This does not prevent more requests being submitted! */ > - if (intel_gt_retire_requests_timeout(ggtt->vm.gt, > - -MAX_SCHEDULE_TIMEOUT)) { > - drm_err(&dev_priv->drm, > - "Failed to wait for idle; VT'd may hang.\n"); > - /* Wait a bit, in hopes it avoids the hang */ > - udelay(10); > - } > - } > + struct drm_i915_private *i915 = to_i915(obj->base.dev); > + struct i915_ggtt *ggtt = &i915->ggtt; > + > + /* XXX This does not prevent more requests being submitted! */ > + if (unlikely(ggtt->do_idle_maps)) > + /* Wait a bit, in hope it avoids the hang */ > + usleep_range(100, 250); > > - dma_unmap_sg(kdev, pages->sgl, pages->nents, PCI_DMA_BIDIRECTIONAL); > + dma_unmap_sg(&i915->drm.pdev->dev, > + pages->sgl, pages->nents, > + PCI_DMA_BIDIRECTIONAL); > } > > /** > -- > 2.20.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx