Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > In order to keep userptr distinct from ggtt mmaps in the eyes of > lockdep, we need to avoid marking those userptr vma as PIN_GLOBAL. (So > long as we comply with only using them as local PIN_USER!) > > References: https://gitlab.freedesktop.org/drm/intel/-/issues/1880 > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Acked-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_ggtt.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c b/drivers/gpu/drm/i915/gt/intel_ggtt.c > index 66165b10256e..8c275f8588c3 100644 > --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c > +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c > @@ -424,22 +424,17 @@ static int ggtt_bind_vma(struct i915_vma *vma, > struct drm_i915_gem_object *obj = vma->obj; > u32 pte_flags; > > + if (i915_vma_is_bound(vma, ~flags & I915_VMA_BIND_MASK)) > + return 0; > + > /* Applicable to VLV (gen8+ do not support RO in the GGTT) */ > pte_flags = 0; > if (i915_gem_object_is_readonly(obj)) > pte_flags |= PTE_READ_ONLY; > > vma->vm->insert_entries(vma->vm, vma, cache_level, pte_flags); > - > vma->page_sizes.gtt = I915_GTT_PAGE_SIZE; > > - /* > - * Without aliasing PPGTT there's no difference between > - * GLOBAL/LOCAL_BIND, it's all the same ptes. Hence unconditionally > - * upgrade to both bound if we bind either to avoid double-binding. > - */ > - atomic_or(I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND, &vma->flags); > - > return 0; > } > > -- > 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