[Intel-xe] [PATCH] drm/xe/mtl: Use 16.67 Mhz freq scale factor to get rpX

Nilawar, Badal badal.nilawar at intel.com
Wed Nov 1 15:58:52 UTC 2023


Hi Ashutosh,

On 01-11-2023 20:53, Dixit, Ashutosh wrote:
> On Wed, 01 Nov 2023 08:17:56 -0700, Badal Nilawar wrote:
>>
> 
> Hi Badal,
> 
>> For mtl and above 16.67 Mhz is the scale factor to calculate
>> rpX frequencies.
>>
>> Signed-off-by: Badal Nilawar <badal.nilawar at intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_guc_pc.c | 25 ++++++++++++++-----------
>>   1 file changed, 14 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
>> index 74247e0d3674..90e3e1b56c27 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_pc.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_pc.c
>> @@ -306,14 +306,15 @@ static int pc_set_max_freq(struct xe_guc_pc *pc, u32 freq)
>>   static void mtl_update_rpe_value(struct xe_guc_pc *pc)
>>   {
>> 	struct xe_gt *gt = pc_to_gt(pc);
>> -	u32 reg;
>> +	u32 freq;
>>
>> 	if (xe_gt_is_media_type(gt))
>> -		reg = xe_mmio_read32(gt, MTL_MPE_FREQUENCY);
>> +		freq = xe_mmio_read32(gt, MTL_MPE_FREQUENCY);
>> 	else
>> -		reg = xe_mmio_read32(gt, MTL_GT_RPE_FREQUENCY);
>> +		freq = xe_mmio_read32(gt, MTL_GT_RPE_FREQUENCY);
> 
> Generally I think we should avoid making these kind of variable name
> changes, if only to keep the patch small and reduce the review
> effort.
> 
> In this case, isn't 'reg' more appropriate anyway? If we retained reg this
> would be a single line change in this function.
Sure I will retain 'reg' and make the change this way

pc->rpe_freq = decode_freq(REG_FIELD_GET(MTL_RPE_MASK, freq));

for here and other two places.

Regards,
Badal
> 
>>
>> -	pc->rpe_freq = REG_FIELD_GET(MTL_RPE_MASK, reg) * GT_FREQUENCY_MULTIPLIER;
>> +	freq = REG_FIELD_GET(MTL_RPE_MASK, freq);
>> +	pc->rpe_freq = decode_freq(freq);
>>   }
>>
>>   static void tgl_update_rpe_value(struct xe_guc_pc *pc)
>> @@ -645,18 +646,20 @@ static const struct attribute *pc_attrs[] = {
>>   static void mtl_init_fused_rp_values(struct xe_guc_pc *pc)
>>   {
>> 	struct xe_gt *gt = pc_to_gt(pc);
>> -	u32 reg;
>> +	u32 freq;
>>
>> 	xe_device_assert_mem_access(pc_to_xe(pc));
>>
>> 	if (xe_gt_is_media_type(gt))
>> -		reg = xe_mmio_read32(gt, MTL_MEDIAP_STATE_CAP);
>> +		freq = xe_mmio_read32(gt, MTL_MEDIAP_STATE_CAP);
>> 	else
>> -		reg = xe_mmio_read32(gt, MTL_RP_STATE_CAP);
>> -	pc->rp0_freq = REG_FIELD_GET(MTL_RP0_CAP_MASK, reg) *
>> -		GT_FREQUENCY_MULTIPLIER;
>> -	pc->rpn_freq = REG_FIELD_GET(MTL_RPN_CAP_MASK, reg) *
>> -		GT_FREQUENCY_MULTIPLIER;
>> +		freq = xe_mmio_read32(gt, MTL_RP_STATE_CAP);
>> +
>> +	freq = REG_FIELD_GET(MTL_RP0_CAP_MASK, freq);
>> +	pc->rp0_freq = decode_freq(freq);
>> +
>> +	freq = REG_FIELD_GET(MTL_RPN_CAP_MASK, freq);
>> +	pc->rpn_freq = decode_freq(freq);
> 
> Similar comments here too.
> 
>>   }
>>
>>   static void tgl_init_fused_rp_values(struct xe_guc_pc *pc)
>> --
>> 2.25.1
>>
> 
> Thanks.
> --
> Ashutosh


More information about the Intel-xe mailing list