diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index 5f3f54073818..98a1b2ce2b9d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | |||
@@ -1032,8 +1032,10 @@ out: | |||
1032 | * @ib: the IB to execute | 1032 | * @ib: the IB to execute |
1033 | * | 1033 | * |
1034 | */ | 1034 | */ |
1035 | void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib, | 1035 | void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, |
1036 | unsigned vmid, bool ctx_switch) | 1036 | struct amdgpu_job *job, |
1037 | struct amdgpu_ib *ib, | ||
1038 | bool ctx_switch) | ||
1037 | { | 1039 | { |
1038 | amdgpu_ring_write(ring, VCE_CMD_IB); | 1040 | amdgpu_ring_write(ring, VCE_CMD_IB); |
1039 | amdgpu_ring_write(ring, lower_32_bits(ib->gpu_addr)); | 1041 | amdgpu_ring_write(ring, lower_32_bits(ib->gpu_addr)); |
@@ -1079,11 +1081,9 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring) | |||
1079 | return 0; | 1081 | return 0; |
1080 | 1082 | ||
1081 | r = amdgpu_ring_alloc(ring, 16); | 1083 | r = amdgpu_ring_alloc(ring, 16); |
1082 | if (r) { | 1084 | if (r) |
1083 | DRM_ERROR("amdgpu: vce failed to lock ring %d (%d).\n", | ||
1084 | ring->idx, r); | ||
1085 | return r; | 1085 | return r; |
1086 | } | 1086 | |
1087 | amdgpu_ring_write(ring, VCE_CMD_END); | 1087 | amdgpu_ring_write(ring, VCE_CMD_END); |
1088 | amdgpu_ring_commit(ring); | 1088 | amdgpu_ring_commit(ring); |
1089 | 1089 | ||
@@ -1093,14 +1093,8 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring) | |||
1093 | DRM_UDELAY(1); | 1093 | DRM_UDELAY(1); |
1094 | } | 1094 | } |
1095 | 1095 | ||
1096 | if (i < timeout) { | 1096 | if (i >= timeout) |
1097 | DRM_DEBUG("ring test on %d succeeded in %d usecs\n", | ||
1098 | ring->idx, i); | ||
1099 | } else { | ||
1100 | DRM_ERROR("amdgpu: ring %d test failed\n", | ||
1101 | ring->idx); | ||
1102 | r = -ETIMEDOUT; | 1097 | r = -ETIMEDOUT; |
1103 | } | ||
1104 | 1098 | ||
1105 | return r; | 1099 | return r; |
1106 | } | 1100 | } |
@@ -1121,27 +1115,19 @@ int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring, long timeout) | |||
1121 | return 0; | 1115 | return 0; |
1122 | 1116 | ||
1123 | r = amdgpu_vce_get_create_msg(ring, 1, NULL); | 1117 | r = amdgpu_vce_get_create_msg(ring, 1, NULL); |
1124 | if (r) { | 1118 | if (r) |
1125 | DRM_ERROR("amdgpu: failed to get create msg (%ld).\n", r); | ||
1126 | goto error; | 1119 | goto error; |
1127 | } | ||
1128 | 1120 | ||
1129 | r = amdgpu_vce_get_destroy_msg(ring, 1, true, &fence); | 1121 | r = amdgpu_vce_get_destroy_msg(ring, 1, true, &fence); |
1130 | if (r) { | 1122 | if (r) |
1131 | DRM_ERROR("amdgpu: failed to get destroy ib (%ld).\n", r); | ||
1132 | goto error; | 1123 | goto error; |
1133 | } | ||
1134 | 1124 | ||
1135 | r = dma_fence_wait_timeout(fence, false, timeout); | 1125 | r = dma_fence_wait_timeout(fence, false, timeout); |
1136 | if (r == 0) { | 1126 | if (r == 0) |
1137 | DRM_ERROR("amdgpu: IB test timed out.\n"); | ||
1138 | r = -ETIMEDOUT; | 1127 | r = -ETIMEDOUT; |
1139 | } else if (r < 0) { | 1128 | else if (r > 0) |
1140 | DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r); | ||
1141 | } else { | ||
1142 | DRM_DEBUG("ib test on ring %d succeeded\n", ring->idx); | ||
1143 | r = 0; | 1129 | r = 0; |
1144 | } | 1130 | |
1145 | error: | 1131 | error: |
1146 | dma_fence_put(fence); | 1132 | dma_fence_put(fence); |
1147 | return r; | 1133 | return r; |