[PATCH 04/36] drm/amdgpu: clean up sdma reset functions

Zhang, Jesse(Jie) Jesse.Zhang at amd.com
Tue Jul 8 01:14:15 UTC 2025


[AMD Official Use Only - AMD Internal Distribution Only]

this patch is Reviewed-by: Jesse Zhang <Jesse.Zhang at amd.com>
-----Original Message-----
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Alex Deucher
Sent: Tuesday, July 8, 2025 3:03 AM
To: amd-gfx at lists.freedesktop.org; Koenig, Christian <Christian.Koenig at amd.com>; Sundararaju, Sathishkumar <Sathishkumar.Sundararaju at amd.com>
Cc: Deucher, Alexander <Alexander.Deucher at amd.com>
Subject: [PATCH 04/36] drm/amdgpu: clean up sdma reset functions

Make them consistent and drop unneeded extra variables.

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 11 +++++++++--  drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 11 +++++++++--  drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 13 ++++---------  drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c | 13 ++++---------
 4 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
index 5a1098bdd8256..1d8ae5ef6e1c4 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
@@ -1544,11 +1544,18 @@ static int sdma_v5_0_reset_queue(struct amdgpu_ring *ring,
                                 struct amdgpu_fence *timedout_fence)  {
        struct amdgpu_device *adev = ring->adev;
-       u32 inst_id = ring->me;
        int r;

+       if (amdgpu_sriov_vf(adev))
+               return -EINVAL;
+
+       if (ring->me >= adev->sdma.num_instances) {
+               dev_err(adev->dev, "sdma instance not found\n");
+               return -EINVAL;
+       }
+
        amdgpu_amdkfd_suspend(adev, true);
-       r = amdgpu_sdma_reset_engine(adev, inst_id, false);
+       r = amdgpu_sdma_reset_engine(adev, ring->me, false);
        amdgpu_amdkfd_resume(adev, true);

        return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
index 6843c2c3d71f5..908ed8b849376 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
@@ -1457,11 +1457,18 @@ static int sdma_v5_2_reset_queue(struct amdgpu_ring *ring,
                                 struct amdgpu_fence *timedout_fence)  {
        struct amdgpu_device *adev = ring->adev;
-       u32 inst_id = ring->me;
        int r;

+       if (amdgpu_sriov_vf(adev))
+               return -EINVAL;
+
+       if (ring->me >= adev->sdma.num_instances) {
+               dev_err(adev->dev, "sdma instance not found\n");
+               return -EINVAL;
+       }
+
        amdgpu_amdkfd_suspend(adev, true);
-       r = amdgpu_sdma_reset_engine(adev, inst_id, false);
+       r = amdgpu_sdma_reset_engine(adev, ring->me, false);
        amdgpu_amdkfd_resume(adev, true);

        return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
index d2effa5318176..99be92efb74c1 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
@@ -1575,18 +1575,13 @@ static int sdma_v6_0_reset_queue(struct amdgpu_ring *ring,
                                 struct amdgpu_fence *timedout_fence)  {
        struct amdgpu_device *adev = ring->adev;
-       int i, r;
+       int r;

        if (amdgpu_sriov_vf(adev))
                return -EINVAL;

-       for (i = 0; i < adev->sdma.num_instances; i++) {
-               if (ring == &adev->sdma.instance[i].ring)
-                       break;
-       }
-
-       if (i == adev->sdma.num_instances) {
-               DRM_ERROR("sdma instance not found\n");
+       if (ring->me >= adev->sdma.num_instances) {
+               dev_err(adev->dev, "sdma instance not found\n");
                return -EINVAL;
        }

@@ -1596,7 +1591,7 @@ static int sdma_v6_0_reset_queue(struct amdgpu_ring *ring,
        if (r)
                return r;

-       r = sdma_v6_0_gfx_resume_instance(adev, i, true);
+       r = sdma_v6_0_gfx_resume_instance(adev, ring->me, true);
        if (r)
                return r;
        amdgpu_fence_driver_force_completion(ring);
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
index 99a080bad2a3d..b79dc0a37667a 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
@@ -807,18 +807,13 @@ static int sdma_v7_0_reset_queue(struct amdgpu_ring *ring,
                                 struct amdgpu_fence *timedout_fence)  {
        struct amdgpu_device *adev = ring->adev;
-       int i, r;
+       int r;

        if (amdgpu_sriov_vf(adev))
                return -EINVAL;

-       for (i = 0; i < adev->sdma.num_instances; i++) {
-               if (ring == &adev->sdma.instance[i].ring)
-                       break;
-       }
-
-       if (i == adev->sdma.num_instances) {
-               DRM_ERROR("sdma instance not found\n");
+       if (ring->me >= adev->sdma.num_instances) {
+               dev_err(adev->dev, "sdma instance not found\n");
                return -EINVAL;
        }

@@ -828,7 +823,7 @@ static int sdma_v7_0_reset_queue(struct amdgpu_ring *ring,
        if (r)
                return r;

-       r = sdma_v7_0_gfx_resume_instance(adev, i, true);
+       r = sdma_v7_0_gfx_resume_instance(adev, ring->me, true);
        if (r)
                return r;
        amdgpu_fence_driver_force_completion(ring);
--
2.50.0



More information about the amd-gfx mailing list