[PATCH v3 5/6] drm/xe: Add helper to accumulate exec queue runtime

Lucas De Marchi lucas.demarchi at intel.com
Wed May 8 03:29:51 UTC 2024


On Tue, May 07, 2024 at 04:45:36PM GMT, Umesh Nerlige Ramappa wrote:
>On Tue, May 07, 2024 at 03:45:09PM -0700, Lucas De Marchi wrote:
>>From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>>
>>Add a helper to accumulate per-client runtime of all its
>>exec queues. This is called every time a sched job is finished.
>>
>>v2:
>> - Use guc_exec_queue_free_job() and execlist_job_free() to accumulate
>>   runtime when job is finished since xe_sched_job_completed() is not a
>>   notification that job finished.
>> - Stop trying to update runtime from xe_exec_queue_fini() - that is
>>   redundant and may happen after xef is closed, leading to a
>>   use-after-free
>> - Do not special case the first timestamp read: the default LRC sets
>>   CTX_TIMESTAMP to zero, so even the first sample should be a valid
>>   one.
>> - Handle the parallel submission case by multiplying the runtime by
>>   width.
>>
>>Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>>---
>>drivers/gpu/drm/xe/xe_device_types.h |  9 +++++++
>>drivers/gpu/drm/xe/xe_exec_queue.c   | 35 ++++++++++++++++++++++++++++
>>drivers/gpu/drm/xe/xe_exec_queue.h   |  1 +
>>drivers/gpu/drm/xe/xe_execlist.c     |  1 +
>>drivers/gpu/drm/xe/xe_guc_submit.c   |  2 ++
>>5 files changed, 48 insertions(+)
>>
>>diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
>>index 906b98fb973b..de078bdf0ab9 100644
>>--- a/drivers/gpu/drm/xe/xe_device_types.h
>>+++ b/drivers/gpu/drm/xe/xe_device_types.h
>>@@ -560,6 +560,15 @@ struct xe_file {
>>		struct mutex lock;
>>	} exec_queue;
>>
>>+	/**
>>+	 * @runtime: hw engine class runtime in ticks for this drm client
>>+	 *
>>+	 * Only stats from xe_exec_queue->lrc[0] are accumulated. For multi-lrc
>>+	 * case, since all jobs run in parallel on the engines, only the stats
>>+	 * from lrc[0] are sufficient.
>
>Maybe we can drop the above comment altogether after the multi-lrc 
>update.

right... I removed it from the middle of the function and this was a
leftover. I will remove it on next version.

thanks
Lucas De Marchi


>
>Umesh


More information about the dri-devel mailing list