Commit 61feed0b authored by Alex Deucher's avatar Alex Deucher
Browse files

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: default avatarJesse Zhang <Jesse.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 648d3f4d
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1543,8 +1543,13 @@ static int sdma_v5_0_reset_queue(struct amdgpu_ring *ring, unsigned int vmid)
{
	struct amdgpu_device *adev = ring->adev;
	u32 inst_id = ring->me;
	int r;

	amdgpu_amdkfd_suspend(adev, true);
	r = amdgpu_sdma_reset_engine(adev, inst_id);
	amdgpu_amdkfd_resume(adev, true);

	return amdgpu_sdma_reset_engine(adev, inst_id);
	return r;
}

static int sdma_v5_0_stop_queue(struct amdgpu_ring *ring)
+6 −1
Original line number Diff line number Diff line
@@ -1456,8 +1456,13 @@ static int sdma_v5_2_reset_queue(struct amdgpu_ring *ring, unsigned int vmid)
{
	struct amdgpu_device *adev = ring->adev;
	u32 inst_id = ring->me;
	int r;

	amdgpu_amdkfd_suspend(adev, true);
	r = amdgpu_sdma_reset_engine(adev, inst_id);
	amdgpu_amdkfd_resume(adev, true);

	return amdgpu_sdma_reset_engine(adev, inst_id);
	return r;
}

static int sdma_v5_2_stop_queue(struct amdgpu_ring *ring)