Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2f537e0 authored by Xiangliang Yu's avatar Xiangliang Yu Committed by Alex Deucher
Browse files

drm/amdgpu/vce4: workaround VCE ring test slow issue



Add VCE ring test slow workaround for SRIOV.

Signed-off-by: default avatarFrank Min <Frank.Min@amd.com>
Signed-off-by: default avatarXiangliang Yu <Xiangliang.Yu@amd.com>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 71f2af89
Loading
Loading
Loading
Loading
+7 −3
Original line number Original line Diff line number Diff line
@@ -955,7 +955,11 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)
	struct amdgpu_device *adev = ring->adev;
	struct amdgpu_device *adev = ring->adev;
	uint32_t rptr = amdgpu_ring_get_rptr(ring);
	uint32_t rptr = amdgpu_ring_get_rptr(ring);
	unsigned i;
	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 */
	/* TODO: remove it if VCE can work for sriov */
	if (amdgpu_sriov_vf(adev))
	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_write(ring, VCE_CMD_END);
	amdgpu_ring_commit(ring);
	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)
		if (amdgpu_ring_get_rptr(ring) != rptr)
			break;
			break;
		DRM_UDELAY(1);
		DRM_UDELAY(1);
	}
	}


	if (i < adev->usec_timeout) {
	if (i < timeout) {
		DRM_INFO("ring test on %d succeeded in %d usecs\n",
		DRM_INFO("ring test on %d succeeded in %d usecs\n",
			 ring->idx, i);
			 ring->idx, i);
	} else {
	} else {