From: Joonas Lahtinen Date: Thu, 3 Feb 2022 07:53:49 +0000 (+0200) Subject: Merge drm/drm-next into drm-intel-gt-next X-Git-Tag: v6.1-rc5~176^2~23^2~397 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=876f7a438e4247a948268ad77b67c494f709cc30;p=platform%2Fkernel%2Flinux-starfive.git Merge drm/drm-next into drm-intel-gt-next 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 --- 876f7a438e4247a948268ad77b67c494f709cc30 diff --cc drivers/gpu/drm/i915/i915_vma.c index 22cdc55,c0d6d55..30307e3 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@@ -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; }