drm/amdgpu/vce4: workaround VCE ring test slow issue
authorXiangliang Yu <Xiangliang.Yu@amd.com>
Thu, 6 Apr 2017 06:43:48 +0000 (14:43 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 28 Apr 2017 21:32:15 +0000 (17:32 -0400)
Add VCE ring test slow workaround for SRIOV.

Signed-off-by: Frank Min <Frank.Min@amd.com>
Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c

index c853400805d1c66c98496b548ae2c30c3f640987..7a8eaeaae94a48f1d13105922f0c7fa7bde17d4a 100644 (file)
@@ -955,7 +955,11 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
        uint32_t rptr = amdgpu_ring_get_rptr(ring);
        unsigned i;
-       int r;
+       int r, timeout = adev->usec_timeout;
+
+       /* workaround VCE ring test slow issue for sriov*/
+       if (amdgpu_sriov_vf(adev))
+               timeout *= 10;
 
        /* TODO: remove it if VCE can work for sriov */
        if (amdgpu_sriov_vf(adev))
@@ -970,13 +974,13 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)
        amdgpu_ring_write(ring, VCE_CMD_END);
        amdgpu_ring_commit(ring);
 
-       for (i = 0; i < adev->usec_timeout; i++) {
+       for (i = 0; i < timeout; i++) {
                if (amdgpu_ring_get_rptr(ring) != rptr)
                        break;
                DRM_UDELAY(1);
        }
 
-       if (i < adev->usec_timeout) {
+       if (i < timeout) {
                DRM_INFO("ring test on %d succeeded in %d usecs\n",
                         ring->idx, i);
        } else {