From: Christian König <christian.koe...@amd.com>

[ Upstream commit 447fab30955cf7dba7dd563f42b67c02284860c8 ]

Otherwise triggering sysfs multiple times without other submissions in
between only runs the shader once.

v2: add some comment
v3: re-add missing cast
v4: squash in semicolon fix

Signed-off-by: Christian König <christian.koe...@amd.com>
Reviewed-by: Srinivasan Shanmugam <srinivasan.shanmu...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
(cherry picked from commit 8b2ae7d492675e8af8902f103364bef59382b935)
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index c1f35ded684e8..506786784e32d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -1411,9 +1411,11 @@ static int amdgpu_gfx_run_cleaner_shader_job(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
        struct drm_gpu_scheduler *sched = &ring->sched;
        struct drm_sched_entity entity;
+       static atomic_t counter;
        struct dma_fence *f;
        struct amdgpu_job *job;
        struct amdgpu_ib *ib;
+       void *owner;
        int i, r;
 
        /* Initialize the scheduler entity */
@@ -1424,9 +1426,15 @@ static int amdgpu_gfx_run_cleaner_shader_job(struct 
amdgpu_ring *ring)
                goto err;
        }
 
-       r = amdgpu_job_alloc_with_ib(ring->adev, &entity, NULL,
-                                    64, 0,
-                                    &job);
+       /*
+        * Use some unique dummy value as the owner to make sure we execute
+        * the cleaner shader on each submission. The value just need to change
+        * for each submission and is otherwise meaningless.
+        */
+       owner = (void *)(unsigned long)atomic_inc_return(&counter);
+
+       r = amdgpu_job_alloc_with_ib(ring->adev, &entity, owner,
+                                    64, 0, &job);
        if (r)
                goto err;
 
-- 
2.39.5

Reply via email to