summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2020-02-10 13:04:25 +0100
committerChristian König <christian.koenig@amd.com>2020-02-12 13:03:56 +0100
commitf704ff7c3d2d97e26a409423e820fb0963cc8de1 (patch)
tree0de21f66ec3c4c11b6ccd509e590d774fff2197f
parent519c2de003b91becfef3d679f133b877adeb2840 (diff)
drm/ttm: individualize resv objects before calling release_notify
This allows release_notify to add and remove fences from deleted objects. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: xinhui pan <xinhui.pan@amd.com> Link: https://patchwork.freedesktop.org/patch/352750/
-rw-r--r--drivers/gpu/drm/ttm/ttm_bo.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 6688599def4b..151edfd8de77 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -572,14 +572,6 @@ static void ttm_bo_release(struct kref *kref)
int ret;
if (!bo->deleted) {
- if (bo->bdev->driver->release_notify)
- bo->bdev->driver->release_notify(bo);
-
- drm_vma_offset_remove(bdev->vma_manager, &bo->base.vma_node);
- ttm_mem_io_lock(man, false);
- ttm_mem_io_free_vm(bo);
- ttm_mem_io_unlock(man);
-
ret = ttm_bo_individualize_resv(bo);
if (ret) {
/* Last resort, if we fail to allocate memory for the
@@ -588,6 +580,14 @@ static void ttm_bo_release(struct kref *kref)
dma_resv_wait_timeout_rcu(bo->base.resv, true, false,
30 * HZ);
}
+
+ if (bo->bdev->driver->release_notify)
+ bo->bdev->driver->release_notify(bo);
+
+ drm_vma_offset_remove(bdev->vma_manager, &bo->base.vma_node);
+ ttm_mem_io_lock(man, false);
+ ttm_mem_io_free_vm(bo);
+ ttm_mem_io_unlock(man);
}
if (!dma_resv_test_signaled_rcu(bo->base.resv, true)) {