Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <Jesse.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+12 -2
+6 -1
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
··· 1543 1543 { 1544 1544 struct amdgpu_device *adev = ring->adev; 1545 1545 u32 inst_id = ring->me; 1546 + int r; 1546 1547 1547 - return amdgpu_sdma_reset_engine(adev, inst_id); 1548 + amdgpu_amdkfd_suspend(adev, true); 1549 + r = amdgpu_sdma_reset_engine(adev, inst_id); 1550 + amdgpu_amdkfd_resume(adev, true); 1551 + 1552 + return r; 1548 1553 } 1549 1554 1550 1555 static int sdma_v5_0_stop_queue(struct amdgpu_ring *ring)
+6 -1
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
··· 1456 1456 { 1457 1457 struct amdgpu_device *adev = ring->adev; 1458 1458 u32 inst_id = ring->me; 1459 + int r; 1459 1460 1460 - return amdgpu_sdma_reset_engine(adev, inst_id); 1461 + amdgpu_amdkfd_suspend(adev, true); 1462 + r = amdgpu_sdma_reset_engine(adev, inst_id); 1463 + amdgpu_amdkfd_resume(adev, true); 1464 + 1465 + return r; 1461 1466 } 1462 1467 1463 1468 static int sdma_v5_2_stop_queue(struct amdgpu_ring *ring)