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

Commit 65f7260b authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher
Browse files

drm/amdgpu: Add job pipe sync dependecy trace



It's useful to trace any dependency a job has on prevoius
jobs.

Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 07507c01
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <drm/amdgpu_drm.h>
#include "amdgpu.h"
#include "atom.h"
#include "amdgpu_trace.h"

#define AMDGPU_IB_TEST_TIMEOUT	msecs_to_jiffies(1000)

@@ -170,6 +171,10 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
	     (amdgpu_sriov_vf(adev) && need_ctx_switch) ||
	     amdgpu_vm_need_pipeline_sync(ring, job))) {
		need_pipe_sync = true;

		if (tmp)
			trace_amdgpu_ib_pipe_sync(job, tmp);

		dma_fence_put(tmp);
	}

+24 −0
Original line number Diff line number Diff line
@@ -462,6 +462,30 @@ TRACE_EVENT(amdgpu_bo_move,
			__entry->new_placement, __entry->bo_size)
);

TRACE_EVENT(amdgpu_ib_pipe_sync,
	    TP_PROTO(struct amdgpu_job *sched_job, struct dma_fence *fence),
	    TP_ARGS(sched_job, fence),
	    TP_STRUCT__entry(
			     __field(const char *,name)
			     __field(uint64_t, id)
			     __field(struct dma_fence *, fence)
			     __field(uint64_t, ctx)
			     __field(unsigned, seqno)
			     ),

	    TP_fast_assign(
			   __entry->name = sched_job->base.sched->name;
			   __entry->id = sched_job->base.id;
			   __entry->fence = fence;
			   __entry->ctx = fence->context;
			   __entry->seqno = fence->seqno;
			   ),
	    TP_printk("job ring=%s, id=%llu, need pipe sync to fence=%p, context=%llu, seq=%u",
		      __entry->name, __entry->id,
		      __entry->fence, __entry->ctx,
		      __entry->seqno)
);

#undef AMDGPU_JOB_GET_TIMELINE_NAME
#endif