On 11/13/25 17:05, Pierre-Eric Pelloux-Prayer wrote: > Use TTM_NUM_MOVE_FENCES as an upperbound of how many fences > ttm might need to deal with moves/evictions. > > --- > v2: removed drm_err calls > --- > > Signed-off-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Reviewed-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 5 ++--- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 6 ++---- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 3 ++- > drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 3 +-- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 6 ++---- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c | 6 ++---- > 7 files changed, 12 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index ecdfe6cb36cc..0338522761bc 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -916,9 +916,8 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser > *p, > goto out_free_user_pages; > > amdgpu_bo_list_for_each_entry(e, p->bo_list) { > - /* One fence for TTM and one for each CS job */ > r = drm_exec_prepare_obj(&p->exec, &e->bo->tbo.base, > - 1 + p->gang_size); > + TTM_NUM_MOVE_FENCES + > p->gang_size); > drm_exec_retry_on_contention(&p->exec); > if (unlikely(r)) > goto out_free_user_pages; > @@ -928,7 +927,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser > *p, > > if (p->uf_bo) { > r = drm_exec_prepare_obj(&p->exec, &p->uf_bo->tbo.base, > - 1 + p->gang_size); > + TTM_NUM_MOVE_FENCES + > p->gang_size); > drm_exec_retry_on_contention(&p->exec); > if (unlikely(r)) > goto out_free_user_pages; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index ce073e894584..2fe6899f6344 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -353,7 +353,7 @@ static void amdgpu_gem_object_close(struct drm_gem_object > *obj, > > drm_exec_init(&exec, DRM_EXEC_IGNORE_DUPLICATES, 0); > drm_exec_until_all_locked(&exec) { > - r = drm_exec_prepare_obj(&exec, &bo->tbo.base, 1); > + r = drm_exec_prepare_obj(&exec, &bo->tbo.base, > TTM_NUM_MOVE_FENCES); > drm_exec_retry_on_contention(&exec); > if (unlikely(r)) > goto out_unlock; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c > index 79bad9cbe2ab..b92561eea3da 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c > @@ -326,11 +326,9 @@ static int amdgpu_vkms_prepare_fb(struct drm_plane > *plane, > return r; > } > > - r = dma_resv_reserve_fences(rbo->tbo.base.resv, 1); > - if (r) { > - dev_err(adev->dev, "allocating fence slot failed (%d)\n", r); > + r = dma_resv_reserve_fences(rbo->tbo.base.resv, TTM_NUM_MOVE_FENCES); > + if (r) > goto error_unlock; > - } > > if (plane->type != DRM_PLANE_TYPE_CURSOR) > domain = amdgpu_display_supported_domains(adev, rbo->flags); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 2f8e83f840a8..aaa44199e9f4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -2630,7 +2630,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct > amdgpu_vm *vm, > } > > amdgpu_vm_bo_base_init(&vm->root, vm, root_bo); > - r = dma_resv_reserve_fences(root_bo->tbo.base.resv, 1); > + r = dma_resv_reserve_fences(root_bo->tbo.base.resv, > + TTM_NUM_MOVE_FENCES); > if (r) > goto error_free_root; > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c > b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c > index ffb7b36e577c..968cef1cbea6 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c > @@ -627,9 +627,8 @@ svm_range_vram_node_new(struct kfd_node *node, struct > svm_range *prange, > } > } > > - r = dma_resv_reserve_fences(bo->tbo.base.resv, 1); > + r = dma_resv_reserve_fences(bo->tbo.base.resv, TTM_NUM_MOVE_FENCES); > if (r) { > - pr_debug("failed %d to reserve bo\n", r); > amdgpu_bo_unreserve(bo); > goto reserve_bo_failed; > } > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > index 56cb866ac6f8..ceb55dd183ed 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c > @@ -952,11 +952,9 @@ static int amdgpu_dm_plane_helper_prepare_fb(struct > drm_plane *plane, > return r; > } > > - r = dma_resv_reserve_fences(rbo->tbo.base.resv, 1); > - if (r) { > - drm_err(adev_to_drm(adev), "reserving fence slot failed > (%d)\n", r); > + r = dma_resv_reserve_fences(rbo->tbo.base.resv, TTM_NUM_MOVE_FENCES); > + if (r) > goto error_unlock; > - } > > if (plane->type != DRM_PLANE_TYPE_CURSOR) > domain = amdgpu_display_supported_domains(adev, rbo->flags); > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c > index d9527c05fc87..110f0173eee6 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c > @@ -106,11 +106,9 @@ static int amdgpu_dm_wb_prepare_job(struct > drm_writeback_connector *wb_connector > return r; > } > > - r = dma_resv_reserve_fences(rbo->tbo.base.resv, 1); > - if (r) { > - drm_err(adev_to_drm(adev), "reserving fence slot failed > (%d)\n", r); > + r = dma_resv_reserve_fences(rbo->tbo.base.resv, TTM_NUM_MOVE_FENCES); > + if (r) > goto error_unlock; > - } > > domain = amdgpu_display_supported_domains(adev, rbo->flags); >
