aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
index 51b5e977ca88..b8963b725dfa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
@@ -32,6 +32,7 @@
32#include <drm/amdgpu_drm.h> 32#include <drm/amdgpu_drm.h>
33#include "amdgpu.h" 33#include "amdgpu.h"
34#include "atom.h" 34#include "atom.h"
35#include "amdgpu_trace.h"
35 36
36#define AMDGPU_IB_TEST_TIMEOUT msecs_to_jiffies(1000) 37#define AMDGPU_IB_TEST_TIMEOUT msecs_to_jiffies(1000)
37 38
@@ -170,6 +171,10 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
170 (amdgpu_sriov_vf(adev) && need_ctx_switch) || 171 (amdgpu_sriov_vf(adev) && need_ctx_switch) ||
171 amdgpu_vm_need_pipeline_sync(ring, job))) { 172 amdgpu_vm_need_pipeline_sync(ring, job))) {
172 need_pipe_sync = true; 173 need_pipe_sync = true;
174
175 if (tmp)
176 trace_amdgpu_ib_pipe_sync(job, tmp);
177
173 dma_fence_put(tmp); 178 dma_fence_put(tmp);
174 } 179 }
175 180
@@ -349,6 +354,14 @@ int amdgpu_ib_ring_tests(struct amdgpu_device *adev)
349 if (!ring || !ring->ready) 354 if (!ring || !ring->ready)
350 continue; 355 continue;
351 356
357 /* skip IB tests for KIQ in general for the below reasons:
358 * 1. We never submit IBs to the KIQ
359 * 2. KIQ doesn't use the EOP interrupts,
360 * we use some other CP interrupt.
361 */
362 if (ring->funcs->type == AMDGPU_RING_TYPE_KIQ)
363 continue;
364
352 /* MM engine need more time */ 365 /* MM engine need more time */
353 if (ring->funcs->type == AMDGPU_RING_TYPE_UVD || 366 if (ring->funcs->type == AMDGPU_RING_TYPE_UVD ||
354 ring->funcs->type == AMDGPU_RING_TYPE_VCE || 367 ring->funcs->type == AMDGPU_RING_TYPE_VCE ||