Another high-level logic comment below. On Thu, Dec 18, 2014 at 05:10:09PM +0000, Michel Thierry wrote: > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index faa0603..c917301 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -1398,6 +1398,15 @@ i915_ppgtt_create(struct drm_device *dev, struct drm_i915_file_private *fpriv) > return ppgtt; > } > > +/* PDE TLBs are a pain invalidate pre GEN8. It requires a context reload. If we > + * are switching between contexts with the same LRCA, we also must do a force > + * restore. > + */ > +#define ppgtt_invalidate_tlbs(vm) do {\ > + /* If current vm != vm, */ \ > + vm->pd_reload_mask = INTEL_INFO(vm->dev)->ring_mask; \ > +} while (0) > + > void i915_ppgtt_release(struct kref *kref) > { > struct i915_hw_ppgtt *ppgtt = > @@ -1433,6 +1442,8 @@ ppgtt_bind_vma(struct i915_vma *vma, > vma->node.size); > if (ret) > return ret; > + > + ppgtt_invalidate_tlbs(vma->vm); Imo we should only set this when we actually allocate new pagetables, and not unconditionally every time we bind. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx