Skip to content

Commit

Permalink
drm/amdgpu: add tracepoint for scheduler (v2)
Browse files Browse the repository at this point in the history
track sched job status like the length of job queue and hw job queue.

v2: fix build after rebase

Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
  • Loading branch information
Chunming Zhou authored and Alex Deucher committed Sep 23, 2015
1 parent 20a85ff commit 353da3c
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
41 changes: 41 additions & 0 deletions drivers/gpu/drm/amd/scheduler/gpu_sched_trace.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _GPU_SCHED_TRACE_H_

#include <linux/stringify.h>
#include <linux/types.h>
#include <linux/tracepoint.h>

#include <drm/drmP.h>

#undef TRACE_SYSTEM
#define TRACE_SYSTEM gpu_sched
#define TRACE_INCLUDE_FILE gpu_sched_trace

TRACE_EVENT(amd_sched_job,
TP_PROTO(struct amd_sched_job *sched_job),
TP_ARGS(sched_job),
TP_STRUCT__entry(
__field(struct amd_sched_entity *, entity)
__field(u32, ring_id)
__field(u32, job_count)
__field(int, hw_job_count)
),

TP_fast_assign(
__entry->entity = sched_job->s_entity;
__entry->ring_id = sched_job->sched->ring_id;
__entry->job_count = kfifo_len(
&sched_job->s_entity->job_queue) / sizeof(sched_job);
__entry->hw_job_count = atomic_read(
&sched_job->sched->hw_rq_count);
),
TP_printk("entity=%p, ring=%u, job count:%u, hw job count:%d",
__entry->entity, __entry->ring_id, __entry->job_count,
__entry->hw_job_count)
);
#endif

/* This part must be outside protection */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#include <trace/define_trace.h>
5 changes: 4 additions & 1 deletion drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
#include <drm/drmP.h>
#include "gpu_scheduler.h"

#define CREATE_TRACE_POINTS
#include "gpu_sched_trace.h"

static struct amd_sched_job *
amd_sched_entity_pop_job(struct amd_sched_entity *entity);
static void amd_sched_wakeup(struct amd_gpu_scheduler *sched);
Expand Down Expand Up @@ -273,7 +276,7 @@ int amd_sched_entity_push_job(struct amd_sched_job *sched_job)

wait_event(entity->scheduler->job_scheduled,
amd_sched_entity_in(sched_job));

trace_amd_sched_job(sched_job);
return 0;
}

Expand Down

0 comments on commit 353da3c

Please sign in to comment.