Merge drm/drm-next into drm-intel-gt-next
authorJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Thu, 3 Feb 2022 07:53:49 +0000 (09:53 +0200)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Thu, 3 Feb 2022 07:53:49 +0000 (09:53 +0200)
Backmerge to bring in 5.17-rc2 to introduce a common baseline
to merge i915_regs changes from drm-intel-next.

Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
1  2 
drivers/gpu/drm/i915/Makefile
drivers/gpu/drm/i915/gem/i915_gem_object_types.h
drivers/gpu/drm/i915/gem/i915_gem_pages.c
drivers/gpu/drm/i915/gt/intel_gt.c
drivers/gpu/drm/i915/gt/intel_gt.h
drivers/gpu/drm/i915/i915_module.c
drivers/gpu/drm/i915/i915_perf.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/i915_vma.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -506,27 -444,22 +506,30 @@@ int i915_vma_bind(struct i915_vma *vma
  
                work->base.dma.error = 0; /* enable the queue_work() */
  
 -              __i915_gem_object_pin_pages(vma->obj);
 -              work->pinned = i915_gem_object_get(vma->obj);
 +              /*
 +               * If we don't have the refcounted pages list, keep a reference
 +               * on the object to avoid waiting for the async bind to
 +               * complete in the object destruction path.
 +               */
 +              if (!work->vma_res->bi.pages_rsgt)
 +                      work->pinned = i915_gem_object_get(vma->obj);
        } else {
                if (vma->obj) {
 -                      int ret;
 -
                        ret = i915_gem_object_wait_moving_fence(vma->obj, true);
 -                      if (ret)
 +                      if (ret) {
 +                              i915_vma_resource_free(vma->resource);
 +                              vma->resource = NULL;
 +
                                return ret;
 +                      }
                }
 -              vma->ops->bind_vma(vma->vm, NULL, vma, cache_level, bind_flags);
 +              vma->ops->bind_vma(vma->vm, NULL, vma->resource, cache_level,
 +                                 bind_flags);
        }
  
+       if (vma->obj)
+               set_bit(I915_BO_WAS_BOUND_BIT, &vma->obj->flags);
        atomic_or(bind_flags, &vma->flags);
        return 0;
  }