On 4/3/26 10:35, Pierre-Eric Pelloux-Prayer wrote:
> This is the only use case for this function.
> 
> ---
> v2: amdgpu_ttm_clear_buffer instead of amdgpu_clear_buffer
> ---
> 
> Signed-off-by: Pierre-Eric Pelloux-Prayer <[email protected]>
> Reviewed-by: Christian König <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 12 +++++------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 23 ++++++++++------------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h    | 13 ++++++------
>  3 files changed, 22 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index d0884bbffa75..195cb1c814d1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -717,9 +717,9 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
>           bo->tbo.resource->mem_type == TTM_PL_VRAM) {
>               struct dma_fence *fence;
>  
> -             r = amdgpu_fill_buffer(amdgpu_ttm_next_clear_entity(adev),
> -                                    bo, 0, NULL, &fence,
> -                                    true, 
> AMDGPU_KERNEL_JOB_ID_TTM_CLEAR_BUFFER);
> +             r = amdgpu_ttm_clear_buffer(amdgpu_ttm_next_clear_entity(adev),
> +                                         bo, NULL, &fence,

Wait a second. Why is the dependency NULL here?

Could it be that we relied on the fact that clears and moves were serialized in 
the past?

Regards,
Christian.

> +                                         true, 
> AMDGPU_KERNEL_JOB_ID_TTM_CLEAR_BUFFER);
>               if (unlikely(r))
>                       goto fail_unreserve;
>  
> @@ -1329,9 +1329,9 @@ void amdgpu_bo_release_notify(struct ttm_buffer_object 
> *bo)
>       if (r)
>               goto out;
>  
> -     r = amdgpu_fill_buffer(amdgpu_ttm_next_clear_entity(adev),
> -                            abo, 0, &bo->base._resv, &fence,
> -                            false, AMDGPU_KERNEL_JOB_ID_CLEAR_ON_RELEASE);
> +     r = amdgpu_ttm_clear_buffer(amdgpu_ttm_next_clear_entity(adev),
> +                                 abo, &bo->base._resv, &fence,
> +                                 false, 
> AMDGPU_KERNEL_JOB_ID_CLEAR_ON_RELEASE);
>       if (WARN_ON(r))
>               goto out;
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index a3d0998b8cec..e74f9f8a88dc 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -417,8 +417,8 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo,
>       if (old_mem->mem_type == TTM_PL_VRAM &&
>           (abo->flags & AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE)) {
>               struct dma_fence *wipe_fence = NULL;
> -             r = amdgpu_fill_buffer(entity, abo, 0, NULL, &wipe_fence,
> -                                    false, AMDGPU_KERNEL_JOB_ID_MOVE_BLIT);
> +             r = amdgpu_ttm_clear_buffer(entity, abo, NULL, &wipe_fence,
> +                                         false, 
> AMDGPU_KERNEL_JOB_ID_MOVE_BLIT);
>               if (r) {
>                       goto error;
>               } else if (wipe_fence) {
> @@ -2572,26 +2572,23 @@ static int amdgpu_ttm_fill_mem(struct amdgpu_device 
> *adev,
>  }
>  
>  /**
> - * amdgpu_fill_buffer - fill a buffer with a given value
> + * amdgpu_ttm_clear_buffer - fill a buffer with 0
>   * @entity: entity to use
>   * @bo: the bo to fill
> - * @src_data: the value to set
>   * @resv: fences contained in this reservation will be used as dependencies.
>   * @out_fence: the fence from the last clear will be stored here. It might be
>   *             NULL if no job was run.
> - * @dependency: optional input dependency fence.
>   * @consider_clear_status: true if region reported as cleared by 
> amdgpu_res_cleared()
>   *                         are skipped.
>   * @k_job_id: trace id
>   *
>   */
> -int amdgpu_fill_buffer(struct amdgpu_ttm_buffer_entity *entity,
> -                    struct amdgpu_bo *bo,
> -                    uint32_t src_data,
> -                    struct dma_resv *resv,
> -                    struct dma_fence **out_fence,
> -                    bool consider_clear_status,
> -                    u64 k_job_id)
> +int amdgpu_ttm_clear_buffer(struct amdgpu_ttm_buffer_entity *entity,
> +                         struct amdgpu_bo *bo,
> +                         struct dma_resv *resv,
> +                         struct dma_fence **out_fence,
> +                         bool consider_clear_status,
> +                         u64 k_job_id)
>  {
>       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
>       struct dma_fence *fence = NULL;
> @@ -2622,7 +2619,7 @@ int amdgpu_fill_buffer(struct amdgpu_ttm_buffer_entity 
> *entity,
>                       goto error;
>  
>               r = amdgpu_ttm_fill_mem(adev, entity,
> -                                     src_data, to, cur_size, resv,
> +                                     0, to, cur_size, resv,
>                                       &next, true, k_job_id);
>               if (r)
>                       goto error;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> index 436a3e09a178..d7b14d5cac77 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> @@ -187,13 +187,12 @@ int amdgpu_copy_buffer(struct amdgpu_device *adev,
>                      struct dma_resv *resv,
>                      struct dma_fence **fence,
>                      bool vm_needs_flush, uint32_t copy_flags);
> -int amdgpu_fill_buffer(struct amdgpu_ttm_buffer_entity *entity,
> -                    struct amdgpu_bo *bo,
> -                    uint32_t src_data,
> -                    struct dma_resv *resv,
> -                    struct dma_fence **out_fence,
> -                    bool consider_clear_status,
> -                    u64 k_job_id);
> +int amdgpu_ttm_clear_buffer(struct amdgpu_ttm_buffer_entity *entity,
> +                         struct amdgpu_bo *bo,
> +                         struct dma_resv *resv,
> +                         struct dma_fence **out_fence,
> +                         bool consider_clear_status,
> +                         u64 k_job_id);
>  struct amdgpu_ttm_buffer_entity *amdgpu_ttm_next_clear_entity(struct 
> amdgpu_device *adev);
>  
>  int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo);

Reply via email to