Skip to content

Commit 905967e

Browse files
committed
drm/amdgpu/sdma5.x: suspend KFD queues in ring reset
SDMA 5.x only supports engine soft reset which resets all queues on the engine. As such, we need to suspend KFD queues around resets like we do for SDMA 4.x. Reviewed-by: Jesse Zhang <[email protected]> Signed-off-by: Alex Deucher <[email protected]> (cherry picked from commit 61feed0)
1 parent 9fbceb3 commit 905967e

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1543,8 +1543,13 @@ static int sdma_v5_0_reset_queue(struct amdgpu_ring *ring, unsigned int vmid)
15431543
{
15441544
struct amdgpu_device *adev = ring->adev;
15451545
u32 inst_id = ring->me;
1546+
int r;
1547+
1548+
amdgpu_amdkfd_suspend(adev, true);
1549+
r = amdgpu_sdma_reset_engine(adev, inst_id);
1550+
amdgpu_amdkfd_resume(adev, true);
15461551

1547-
return amdgpu_sdma_reset_engine(adev, inst_id);
1552+
return r;
15481553
}
15491554

15501555
static int sdma_v5_0_stop_queue(struct amdgpu_ring *ring)

drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1456,8 +1456,13 @@ static int sdma_v5_2_reset_queue(struct amdgpu_ring *ring, unsigned int vmid)
14561456
{
14571457
struct amdgpu_device *adev = ring->adev;
14581458
u32 inst_id = ring->me;
1459+
int r;
1460+
1461+
amdgpu_amdkfd_suspend(adev, true);
1462+
r = amdgpu_sdma_reset_engine(adev, inst_id);
1463+
amdgpu_amdkfd_resume(adev, true);
14591464

1460-
return amdgpu_sdma_reset_engine(adev, inst_id);
1465+
return r;
14611466
}
14621467

14631468
static int sdma_v5_2_stop_queue(struct amdgpu_ring *ring)

0 commit comments

Comments
 (0)