This commit refactors the cleaner shader initialization process. The
changes remove unnecessary checks for adev->gfx.enable_cleaner_shader in
the amdgpu_gfx_cleaner_shader_sw_init,
amdgpu_gfx_cleaner_shader_sw_fini, and amdgpu_gfx_cleaner_shader_init
functions. These checks are now performed before these functions are
called, which simplifies the functions and makes the control flow of the
program clearer.

Additionally, the cleaner_shader_size and cleaner_shader_ptr parameters
have been removed from the amdgpu_gfx_cleaner_shader_sw_init and
amdgpu_gfx_cleaner_shader_init functions. These values are now obtained
directly from the adev->gfx structure inside the functions.

Fixes: 63063b6c5a8d ("drm/amdgpu: Add infrastructure for Cleaner Shader 
feature")
Cc: Christian König <[email protected]>
Cc: Alex Deucher <[email protected]>
Signed-off-by: Srinivasan Shanmugam <[email protected]>
Suggested-by: Christian König <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 21 ++++++---------------
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h |  7 ++-----
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index 83e54697f0ee..9891114ae6d4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -1655,13 +1655,10 @@ void amdgpu_gfx_sysfs_isolation_shader_fini(struct 
amdgpu_device *adev)
        device_remove_file(adev->dev, &dev_attr_run_cleaner_shader);
 }
 
-int amdgpu_gfx_cleaner_shader_sw_init(struct amdgpu_device *adev,
-                                     unsigned int cleaner_shader_size)
+int amdgpu_gfx_cleaner_shader_sw_init(struct amdgpu_device *adev)
 {
-       if (!adev->gfx.enable_cleaner_shader)
-               return -EOPNOTSUPP;
 
-       return amdgpu_bo_create_kernel(adev, cleaner_shader_size, PAGE_SIZE,
+       return amdgpu_bo_create_kernel(adev, adev->gfx.cleaner_shader_size, 
PAGE_SIZE,
                                       AMDGPU_GEM_DOMAIN_VRAM | 
AMDGPU_GEM_DOMAIN_GTT,
                                       &adev->gfx.cleaner_shader_obj,
                                       &adev->gfx.cleaner_shader_gpu_addr,
@@ -1670,24 +1667,18 @@ int amdgpu_gfx_cleaner_shader_sw_init(struct 
amdgpu_device *adev,
 
 void amdgpu_gfx_cleaner_shader_sw_fini(struct amdgpu_device *adev)
 {
-       if (!adev->gfx.enable_cleaner_shader)
-               return;
 
        amdgpu_bo_free_kernel(&adev->gfx.cleaner_shader_obj,
                              &adev->gfx.cleaner_shader_gpu_addr,
                              (void **)&adev->gfx.cleaner_shader_cpu_ptr);
 }
 
-void amdgpu_gfx_cleaner_shader_init(struct amdgpu_device *adev,
-                                   unsigned int cleaner_shader_size,
-                                   const void *cleaner_shader_ptr)
+void amdgpu_gfx_cleaner_shader_init(struct amdgpu_device *adev)
 {
-       if (!adev->gfx.enable_cleaner_shader)
-               return;
 
-       if (adev->gfx.cleaner_shader_cpu_ptr && cleaner_shader_ptr)
-               memcpy_toio(adev->gfx.cleaner_shader_cpu_ptr, 
cleaner_shader_ptr,
-                           cleaner_shader_size);
+       if (adev->gfx.cleaner_shader_cpu_ptr && adev->gfx.cleaner_shader_ptr)
+               memcpy_toio(adev->gfx.cleaner_shader_cpu_ptr, 
adev->gfx.cleaner_shader_ptr,
+                           adev->gfx.cleaner_shader_size);
 }
 
 /**
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
index 5644e10a86a9..07bd27c066c3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
@@ -573,12 +573,9 @@ void amdgpu_gfx_ras_error_func(struct amdgpu_device *adev,
                void *ras_error_status,
                void (*func)(struct amdgpu_device *adev, void *ras_error_status,
                                int xcc_id));
-int amdgpu_gfx_cleaner_shader_sw_init(struct amdgpu_device *adev,
-                                     unsigned int cleaner_shader_size);
+int amdgpu_gfx_cleaner_shader_sw_init(struct amdgpu_device *adev);
 void amdgpu_gfx_cleaner_shader_sw_fini(struct amdgpu_device *adev);
-void amdgpu_gfx_cleaner_shader_init(struct amdgpu_device *adev,
-                                   unsigned int cleaner_shader_size,
-                                   const void *cleaner_shader_ptr);
+void amdgpu_gfx_cleaner_shader_init(struct amdgpu_device *adev);
 int amdgpu_gfx_sysfs_isolation_shader_init(struct amdgpu_device *adev);
 void amdgpu_gfx_sysfs_isolation_shader_fini(struct amdgpu_device *adev);
 void amdgpu_gfx_enforce_isolation_handler(struct work_struct *work);
-- 
2.34.1

Reply via email to