drm/amd/amdgpu: add fini virt data exchange to ip_suspend
authorJingwen Chen <Jingwen.Chen2@amd.com>
Fri, 5 Mar 2021 06:06:34 +0000 (14:06 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 5 Mar 2021 20:12:29 +0000 (15:12 -0500)
[Why]
when try to shutdown guest vm in sriov mode, virt data
exchange is not fini. After vram lost, trying to write
vram could hang cpu.

[How]
add fini virt data exchange in ip_suspend

Signed-off-by: Jingwen Chen <Jingwen.Chen2@amd.com>
Reviewed-by: Jack Zhang <Jack.Zhang1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index 9269a19332eb69c1bff74f696a40325810090361..b79210db293ab6e59367864e5441d2c92401db47 100644 (file)
@@ -2776,8 +2776,10 @@ int amdgpu_device_ip_suspend(struct amdgpu_device *adev)
 {
        int r;
 
-       if (amdgpu_sriov_vf(adev))
+       if (amdgpu_sriov_vf(adev)) {
+               amdgpu_virt_fini_data_exchange(adev);
                amdgpu_virt_request_full_gpu(adev, false);
+       }
 
        r = amdgpu_device_ip_suspend_phase1(adev);
        if (r)