On Wed, Jul 29, 2015 at 08:02:48PM +0100, Chris Wilson wrote: > If the device does not support the aliasing ppgtt, we must translate > user bind requests (PIN_USER) from LOCAL_BIND to a GLOBAL_BIND. However, > since this is device specific we cannot do this conveniently in the > upper layers and so must manage the vma->bound flags in the backend. > > Partial revert of commit 75d04a3773ecee617847de963ae4195d6aa74c28 [4.2-rc1] > Author: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > Date: Tue Apr 28 17:56:17 2015 +0300 > > drm/i915/gtt: Allocate va range only if vma is not bound > > Note this was spotted by Daniel originally, but we dropped the ball in > getting the fix in before the bug going wild. Sorry all. > > Reported-by: Vincent Legoll vincent.legoll@xxxxxxxxx > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91133 > References: https://bugs.freedesktop.org/show_bug.cgi?id=90224 > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Michel Thierry <michel.thierry@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> Picked up for -fixes, thanks for the patch. -Daniel > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 9d3852c521c7..c0d8e1f5b5c2 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -1928,6 +1928,17 @@ static int ggtt_bind_vma(struct i915_vma *vma, > vma->vm->insert_entries(vma->vm, pages, > vma->node.start, > cache_level, pte_flags); > + > + /* Note the inconsistency here is due to absence of the > + * aliasing ppgtt on gen4 and earlier. Though we always > + * request PIN_USER for execbuffer (translated to LOCAL_BIND), > + * without the appgtt, we cannot honour that request and so > + * must substitute it with a global binding. Since we do this > + * behind the upper layers back, we need to explicitly set > + * the bound flag ourselves. > + */ > + vma->bound |= GLOBAL_BIND; > + > } > > if (dev_priv->mm.aliasing_ppgtt && flags & LOCAL_BIND) { > -- > 2.4.6 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx