Re: [PATCH v5 6/7] drm/amdgpu: rename amdgpu_fill_buffer as amdgpu_ttm_clear_buffer

2026-04-08 Thread Pierre-Eric Pelloux-Prayer




Le 07/04/2026 à 12:16, Christian König a écrit :



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 
Reviewed-by: Christian König 
---
  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?



Good catch.


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



No it's a mistake in the previous patch where the resv param was dropped. I've 
fixed it in v6.

Thanks,
PE



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, res

Re: [PATCH v5 6/7] drm/amdgpu: rename amdgpu_fill_buffer as amdgpu_ttm_clear_buffer

2026-04-07 Thread Christian König



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 
> Reviewed-by: Christian König 
> ---
>  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_siz

[PATCH v5 6/7] drm/amdgpu: rename amdgpu_fill_buffer as amdgpu_ttm_clear_buffer

2026-04-03 Thread Pierre-Eric Pelloux-Prayer
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 
Reviewed-by: Christian König 
---
 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,
+   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/a