summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
index f136fec7b4f4..3eaf1a573e73 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
@@ -1357,12 +1357,19 @@ static int sdma_v5_2_hw_fini(void *handle)
{
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
- if (amdgpu_sriov_vf(adev))
- return 0;
-
+ /*
+ * Under SRIOV, the VF cannot single-mindedly stop SDMA engine
+ * However, we still need to clean up the DRM entity
+ * Therefore, we will re-enable SDMA afterwards.
+ */
sdma_v5_2_ctx_switch_enable(adev, false);
sdma_v5_2_enable(adev, false);
+ if (amdgpu_sriov_vf(adev)) {
+ sdma_v5_2_enable(adev, true);
+ sdma_v5_2_ctx_switch_enable(adev, true);
+ }
+
return 0;
}