aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
index bfb3c274d7f0..ef5342bd6968 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
@@ -1127,3 +1127,38 @@ void amdgpu_uvd_ring_end_use(struct amdgpu_ring *ring)
1127{ 1127{
1128 schedule_delayed_work(&ring->adev->uvd.idle_work, UVD_IDLE_TIMEOUT); 1128 schedule_delayed_work(&ring->adev->uvd.idle_work, UVD_IDLE_TIMEOUT);
1129} 1129}
1130
1131/**
1132 * amdgpu_uvd_ring_test_ib - test ib execution
1133 *
1134 * @ring: amdgpu_ring pointer
1135 *
1136 * Test if we can successfully execute an IB
1137 */
1138int amdgpu_uvd_ring_test_ib(struct amdgpu_ring *ring)
1139{
1140 struct fence *fence = NULL;
1141 int r;
1142
1143 r = amdgpu_uvd_get_create_msg(ring, 1, NULL);
1144 if (r) {
1145 DRM_ERROR("amdgpu: failed to get create msg (%d).\n", r);
1146 goto error;
1147 }
1148
1149 r = amdgpu_uvd_get_destroy_msg(ring, 1, true, &fence);
1150 if (r) {
1151 DRM_ERROR("amdgpu: failed to get destroy ib (%d).\n", r);
1152 goto error;
1153 }
1154
1155 r = fence_wait(fence, false);
1156 if (r) {
1157 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
1158 goto error;
1159 }
1160 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
1161error:
1162 fence_put(fence);
1163 return r;
1164}