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 <[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?


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