[PATCH 6/7] drm/xe/guc: Expose engine busyness only for supported GuC version
Riana Tauro
riana.tauro at intel.com
Mon Nov 18 07:37:32 UTC 2024
Hi Umesh
On 11/15/2024 5:42 AM, Umesh Nerlige Ramappa wrote:
> On Wed, Nov 13, 2024 at 10:25:48AM +0530, Riana Tauro wrote:
>> Engine busyness is supported only on GuC versions >= 70.32.0
>> Allow enabling/reading engine busyness only on supported
>> GuC versions. Warn once if not supported.
>>
>> Signed-off-by: Riana Tauro <riana.tauro at intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_engine_activity.c | 22 ++++++++++++++++++++++
>> 1 file changed, 22 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_engine_activity.c b/drivers/gpu/
>> drm/xe/xe_engine_activity.c
>> index 7a2ae09d23de..fc34dcf3057a 100644
>> --- a/drivers/gpu/drm/xe/xe_engine_activity.c
>> +++ b/drivers/gpu/drm/xe/xe_engine_activity.c
>> @@ -236,6 +236,16 @@ static u32 gpm_timestamp_shift(struct xe_gt *gt)
>> return 3 - REG_FIELD_GET(RPM_CONFIG0_CTC_SHIFT_PARAMETER_MASK, reg);
>> }
>>
>> +static bool guc_engine_activity_supported(struct xe_guc *guc)
>> +{
>> + if (GUC_FIRMWARE_VER(guc) >= MAKE_GUC_VER(70, 32, 0))
>> + return true;
>> +
>> + drm_WARN_ON_ONCE(&guc_to_xe(guc)->drm,
>> + "Engine busyness not supported in this GuC version\n");
>> + return false;
>> +}
>> +
>> /**
>> * xe_engine_activity_get_active_ticks - Get engine active ticks
>> * @hwe: The hw_engine object
>> @@ -246,6 +256,9 @@ u64 xe_engine_activity_get_active_ticks(struct
>> xe_hw_engine *hwe)
>> {
>> struct xe_guc *guc = &hwe->gt->uc.guc;
>>
>> + if (!guc_engine_activity_supported(guc))
>> + return 0;
>> +
>> return get_engine_active_ticks(guc, hwe);
>> }
>>
>> @@ -259,6 +272,9 @@ u64 xe_engine_activity_get_total_ticks(struct
>> xe_hw_engine *hwe)
>> {
>> struct xe_guc *guc = &hwe->gt->uc.guc;
>>
>> + if (!guc_engine_activity_supported(guc))
>
> Hmm, not sure my response to this landed on the ML. Sending again..
>
> If GuC is an older version and UMDs have implemented the new interface,
> we could return CPU time in ticks here so that UMDs will still be able
> to use something in the denominator instead of a divide by zero. Busy
> value will still be 0. Thoughts?
We could do this. But shouldn't UMD only read total ticks if they see an
actual busyness? Busyness % will anyway be 0 even if we return the cpu
time in ticks
Thanks
Riana Tauro
>
> Umesh
>
>> + return 0;
>> +
>> return get_engine_total_ticks(guc, hwe);
>> }
More information about the Intel-xe
mailing list