diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-12-03 19:14:02 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2021-02-01 10:06:15 +0000 |
commit | 7dba1da693e219daa598d09290fa746cf617b1a4 (patch) | |
tree | 6dad443075c2e7cb7dbdc24dc93026785e039ccb | |
parent | 014c42f555718d0a4b6e13970f5a3ce27c864651 (diff) |
bltwip-migrate
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c index a9af397b7d71..4217727ff14b 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c @@ -108,6 +108,14 @@ i915_gem_object_active_pin(struct drm_i915_gem_object *obj) return ref; } +static void +late_active_set_exclusive(struct i915_active *ref, struct dma_fence *fence) +{ + fence = i915_active_set_exclusive(ref, fence); + if (fence) + dma_fence_put(fence); +} + static unsigned long i915_gem_object_migrate_flags(struct drm_i915_gem_object *obj) { @@ -153,7 +161,7 @@ int i915_gem_object_fill_blt(struct drm_i915_gem_object *obj, i915_gem_object_migrate_flags(obj), value, &rq); if (rq) { - i915_active_set_exclusive(ref, &rq->fence); + late_active_set_exclusive(ref, &rq->fence); dma_resv_add_excl_fence(obj->base.resv, &rq->fence); i915_request_put(rq); } @@ -228,8 +236,8 @@ retry: i915_gem_object_migrate_flags(dst), &rq); if (rq) { - i915_active_set_exclusive(spin, &rq->fence); - i915_active_set_exclusive(dpin, &rq->fence); + late_active_set_exclusive(spin, &rq->fence); + late_active_set_exclusive(dpin, &rq->fence); dma_resv_add_shared_fence(src->base.resv, &rq->fence); dma_resv_add_excl_fence(dst->base.resv, &rq->fence); |