diff options
author | Christian König <christian.koenig@amd.com> | 2020-02-10 13:04:25 +0100 |
---|---|---|
committer | Christian König <christian.koenig@amd.com> | 2020-02-12 13:03:56 +0100 |
commit | f704ff7c3d2d97e26a409423e820fb0963cc8de1 (patch) | |
tree | 0de21f66ec3c4c11b6ccd509e590d774fff2197f /drivers/gpu/drm | |
parent | 519c2de003b91becfef3d679f133b877adeb2840 (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/
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 16 |
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)) { |