[PATCH 01/13] drm/ttm: introduce ttm_bo_move_null
Christian König
christian.koenig at amd.com
Tue Sep 8 08:50:13 UTC 2020
Am 07.09.20 um 22:46 schrieb Dave Airlie:
> From: Dave Airlie <airlied at redhat.com>
>
> This pattern is cut-n-pasted across 4 drivers, switch it to
> a WARN_ON instead, as BUG_ON is considered a bad idea usually.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 24 +++---------------------
> drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +---
> drivers/gpu/drm/qxl/qxl_ttm.c | 12 +-----------
> drivers/gpu/drm/radeon/radeon_ttm.c | 14 ++------------
> include/drm/ttm/ttm_bo_driver.h | 17 +++++++++++++++++
> 5 files changed, 24 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index ca568e25c41c..9592505563bf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -174,24 +174,6 @@ static int amdgpu_verify_access(struct ttm_buffer_object *bo, struct file *filp)
> filp->private_data);
> }
>
> -/**
> - * amdgpu_move_null - Register memory for a buffer object
> - *
> - * @bo: The bo to assign the memory to
> - * @new_mem: The memory to be assigned.
> - *
> - * Assign the memory from new_mem to the memory of the buffer object bo.
> - */
> -static void amdgpu_move_null(struct ttm_buffer_object *bo,
> - struct ttm_resource *new_mem)
> -{
> - struct ttm_resource *old_mem = &bo->mem;
> -
> - BUG_ON(old_mem->mm_node != NULL);
> - *old_mem = *new_mem;
> - new_mem->mm_node = NULL;
> -}
> -
> /**
> * amdgpu_mm_node_addr - Compute the GPU relative offset of a GTT buffer.
> *
> @@ -676,7 +658,7 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
> adev = amdgpu_ttm_adev(bo->bdev);
>
> if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
> - amdgpu_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
> if ((old_mem->mem_type == TTM_PL_TT &&
> @@ -684,7 +666,7 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
> (old_mem->mem_type == TTM_PL_SYSTEM &&
> new_mem->mem_type == TTM_PL_TT)) {
> /* bind is enough */
> - amdgpu_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
> if (old_mem->mem_type == AMDGPU_PL_GDS ||
> @@ -694,7 +676,7 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
> new_mem->mem_type == AMDGPU_PL_GWS ||
> new_mem->mem_type == AMDGPU_PL_OA) {
> /* Nothing to save here */
> - amdgpu_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 41aa7ac31bd5..091f80fbbd7c 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -993,9 +993,7 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict,
>
> /* Fake bo copy. */
> if (old_reg->mem_type == TTM_PL_SYSTEM && !bo->ttm) {
> - BUG_ON(bo->mem.mm_node != NULL);
> - bo->mem = *new_reg;
> - new_reg->mm_node = NULL;
> + ttm_bo_move_null(bo, new_reg);
> goto out;
> }
>
> diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
> index 3ab460339145..c3530c6e46bd 100644
> --- a/drivers/gpu/drm/qxl/qxl_ttm.c
> +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
> @@ -159,16 +159,6 @@ static struct ttm_tt *qxl_ttm_tt_create(struct ttm_buffer_object *bo,
> return >t->ttm;
> }
>
> -static void qxl_move_null(struct ttm_buffer_object *bo,
> - struct ttm_resource *new_mem)
> -{
> - struct ttm_resource *old_mem = &bo->mem;
> -
> - BUG_ON(old_mem->mm_node != NULL);
> - *old_mem = *new_mem;
> - new_mem->mm_node = NULL;
> -}
> -
> static int qxl_bo_move(struct ttm_buffer_object *bo, bool evict,
> struct ttm_operation_ctx *ctx,
> struct ttm_resource *new_mem)
> @@ -181,7 +171,7 @@ static int qxl_bo_move(struct ttm_buffer_object *bo, bool evict,
> return ret;
>
> if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
> - qxl_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
> return ttm_bo_move_memcpy(bo, ctx, new_mem);
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index a8d6ca88c6e3..1d3e8bb69f8e 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -148,16 +148,6 @@ static int radeon_verify_access(struct ttm_buffer_object *bo, struct file *filp)
> filp->private_data);
> }
>
> -static void radeon_move_null(struct ttm_buffer_object *bo,
> - struct ttm_resource *new_mem)
> -{
> - struct ttm_resource *old_mem = &bo->mem;
> -
> - BUG_ON(old_mem->mm_node != NULL);
> - *old_mem = *new_mem;
> - new_mem->mm_node = NULL;
> -}
> -
> static int radeon_move_blit(struct ttm_buffer_object *bo,
> bool evict, bool no_wait_gpu,
> struct ttm_resource *new_mem,
> @@ -316,7 +306,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
>
> rdev = radeon_get_rdev(bo->bdev);
> if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
> - radeon_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
> if ((old_mem->mem_type == TTM_PL_TT &&
> @@ -324,7 +314,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
> (old_mem->mem_type == TTM_PL_SYSTEM &&
> new_mem->mem_type == TTM_PL_TT)) {
> /* bind is enough */
> - radeon_move_null(bo, new_mem);
> + ttm_bo_move_null(bo, new_mem);
> return 0;
> }
> if (!rdev->ring[radeon_copy_ring_index(rdev)].ready ||
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index a694388f7b13..ebba282667ba 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -520,6 +520,23 @@ static inline void ttm_bo_move_to_lru_tail_unlocked(struct ttm_buffer_object *bo
> spin_unlock(&ttm_bo_glob.lru_lock);
> }
>
> +/**
> + * ttm_bo_move_null = assign memory for a buffer object.
> + * @bo: The bo to assign the memory to
> + * @new_mem: The memory to be assigned.
> + *
> + * Assign the memory from new_mem to the memory of the buffer object bo.
> + */
> +static inline void ttm_bo_move_null(struct ttm_buffer_object *bo,
> + struct ttm_resource *new_mem)
> +{
> + struct ttm_resource *old_mem = &bo->mem;
> +
> + WARN_ON(old_mem->mm_node != NULL);
> + *old_mem = *new_mem;
> + new_mem->mm_node = NULL;
> +}
> +
> /**
> * ttm_bo_unreserve
> *
More information about the dri-devel
mailing list