Commit 1fe0879e authored by Maíra Canal's avatar Maíra Canal

drm/v3d: Create tracepoints to track the CPU job

Create tracepoints to track the three major events of a CPU job
lifetime:
	1. Submission of a `v3d_submit_cpu` IOCTL
	2. Beginning of the execution of a CPU job
	3. Ending of the execution of a CPU job
Signed-off-by: default avatarMaíra Canal <mcanal@igalia.com>
Reviewed-by: default avatarIago Toral Quiroga <itoral@igalia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231130164420.932823-11-mcanal@igalia.com
parent c5195d00
...@@ -288,8 +288,12 @@ v3d_cpu_job_run(struct drm_sched_job *sched_job) ...@@ -288,8 +288,12 @@ v3d_cpu_job_run(struct drm_sched_job *sched_job)
file->start_ns[V3D_CPU] = local_clock(); file->start_ns[V3D_CPU] = local_clock();
v3d->queue[V3D_CPU].start_ns = file->start_ns[V3D_CPU]; v3d->queue[V3D_CPU].start_ns = file->start_ns[V3D_CPU];
trace_v3d_cpu_job_begin(&v3d->drm, job->job_type);
cpu_job_function[job->job_type](job); cpu_job_function[job->job_type](job);
trace_v3d_cpu_job_end(&v3d->drm, job->job_type);
runtime = local_clock() - file->start_ns[V3D_CPU]; runtime = local_clock() - file->start_ns[V3D_CPU];
file->enabled_ns[V3D_CPU] += runtime; file->enabled_ns[V3D_CPU] += runtime;
......
...@@ -824,6 +824,8 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data, ...@@ -824,6 +824,8 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
goto fail; goto fail;
} }
trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type);
ret = v3d_job_init(v3d, file_priv, &cpu_job->base, ret = v3d_job_init(v3d, file_priv, &cpu_job->base,
v3d_job_free, 0, &se, V3D_CPU); v3d_job_free, 0, &se, V3D_CPU);
if (ret) if (ret)
......
...@@ -225,6 +225,63 @@ TRACE_EVENT(v3d_submit_csd, ...@@ -225,6 +225,63 @@ TRACE_EVENT(v3d_submit_csd,
__entry->seqno) __entry->seqno)
); );
TRACE_EVENT(v3d_submit_cpu_ioctl,
TP_PROTO(struct drm_device *dev, enum v3d_cpu_job_type job_type),
TP_ARGS(dev, job_type),
TP_STRUCT__entry(
__field(u32, dev)
__field(enum v3d_cpu_job_type, job_type)
),
TP_fast_assign(
__entry->dev = dev->primary->index;
__entry->job_type = job_type;
),
TP_printk("dev=%u, job_type=%d",
__entry->dev,
__entry->job_type)
);
TRACE_EVENT(v3d_cpu_job_begin,
TP_PROTO(struct drm_device *dev, enum v3d_cpu_job_type job_type),
TP_ARGS(dev, job_type),
TP_STRUCT__entry(
__field(u32, dev)
__field(enum v3d_cpu_job_type, job_type)
),
TP_fast_assign(
__entry->dev = dev->primary->index;
__entry->job_type = job_type;
),
TP_printk("dev=%u, job_type=%d",
__entry->dev,
__entry->job_type)
);
TRACE_EVENT(v3d_cpu_job_end,
TP_PROTO(struct drm_device *dev, enum v3d_cpu_job_type job_type),
TP_ARGS(dev, job_type),
TP_STRUCT__entry(
__field(u32, dev)
__field(enum v3d_cpu_job_type, job_type)
),
TP_fast_assign(
__entry->dev = dev->primary->index;
__entry->job_type = job_type;
),
TP_printk("dev=%u, job_type=%d",
__entry->dev,
__entry->job_type)
);
TRACE_EVENT(v3d_cache_clean_begin, TRACE_EVENT(v3d_cache_clean_begin,
TP_PROTO(struct drm_device *dev), TP_PROTO(struct drm_device *dev),
TP_ARGS(dev), TP_ARGS(dev),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment