]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
drm/amdgpu: For sriov reset, move IB test into exclusive mode
authorEmily Deng <Emily.Deng@amd.com>
Thu, 26 Apr 2018 10:02:55 +0000 (18:02 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 May 2018 18:44:06 +0000 (13:44 -0500)
When put the IB test out of exclusive mode, and do sriov reset,
the IB test will randomly fail. As out of exclusive mode it uses
kiq to do read and write registers, but as it has world switch,
the kiq read and write time will be random, sometimes it will
beyond the MAX_KIQ_REG_WAIT and then the read or write register
will fail, which will result the IB test fail.

Signed-off-by: Emily Deng <Emily.Deng@amd.com>
Reviewed-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index e6657ec363b8c35b54d12cf183ce8a4bb6a66c9e..9fb20a53d5b2149007d2715858e66f6889ac29e3 100644 (file)
@@ -3143,20 +3143,19 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev,
 
        /* now we are okay to resume SMC/CP/SDMA */
        r = amdgpu_device_ip_reinit_late_sriov(adev);
-       amdgpu_virt_release_full_gpu(adev, true);
        if (r)
                goto error;
 
        amdgpu_irq_gpu_reset_resume_helper(adev);
        r = amdgpu_ib_ring_tests(adev);
 
+error:
+       amdgpu_virt_release_full_gpu(adev, true);
        if (!r && adev->virt.gim_feature & AMDGIM_FEATURE_GIM_FLR_VRAMLOST) {
                atomic_inc(&adev->vram_lost_counter);
                r = amdgpu_device_handle_vram_lost(adev);
        }
 
-error:
-
        return r;
 }