Commit df622729 authored by Lucas Stach's avatar Lucas Stach

drm/scheduler: track GPU active time per entity

Track the accumulated time that jobs from this entity were active
on the GPU. This allows drivers using the scheduler to trivially
implement the DRM fdinfo when the hardware doesn't provide more
specific information than signalling job completion anyways.

[Bagas: Append missing colon to @elapsed_ns]
Signed-off-by: default avatarBagas Sanjaya <bagasdotme@gmail.com>
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
parent 6b05266a
...@@ -895,6 +895,12 @@ drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched) ...@@ -895,6 +895,12 @@ drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched)
spin_unlock(&sched->job_list_lock); spin_unlock(&sched->job_list_lock);
if (job) {
job->entity->elapsed_ns += ktime_to_ns(
ktime_sub(job->s_fence->finished.timestamp,
job->s_fence->scheduled.timestamp));
}
return job; return job;
} }
......
...@@ -228,6 +228,13 @@ struct drm_sched_entity { ...@@ -228,6 +228,13 @@ struct drm_sched_entity {
*/ */
struct rb_node rb_tree_node; struct rb_node rb_tree_node;
/**
* @elapsed_ns:
*
* Records the amount of time where jobs from this entity were active
* on the GPU.
*/
uint64_t elapsed_ns;
}; };
/** /**
......
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