[AMD Official Use Only - AMD Internal Distribution Only]

Based on private discussions, please continue to submit the code.

Best Regards,
Kevin

-----Original Message-----
From: Kamal, Asad <[email protected]>
Sent: Monday, March 2, 2026 2:34 PM
To: Wang, Yang(Kevin) <[email protected]>; Lazar, Lijo 
<[email protected]>; [email protected]
Cc: Zhang, Hawking <[email protected]>; Ma, Le <[email protected]>; Zhang, 
Morris <[email protected]>; Deucher, Alexander <[email protected]>
Subject: RE: [PATCH] drm/amd/pm: Avoid overflow when sorting pp_feature list

[AMD Official Use Only - AMD Internal Distribution Only]

-1 in memset fills all bytes with 0xFF. For int16_t, that becomes 0xFFFF, which 
is -1 in two’s‑complement. So the < 0 check still works as intended.

Regards
Asad

-----Original Message-----
From: Wang, Yang(Kevin) <[email protected]>
Sent: Monday, March 2, 2026 11:59 AM
To: Lazar, Lijo <[email protected]>; Kamal, Asad <[email protected]>; 
[email protected]
Cc: Zhang, Hawking <[email protected]>; Ma, Le <[email protected]>; Zhang, 
Morris <[email protected]>; Deucher, Alexander <[email protected]>
Subject: RE: [PATCH] drm/amd/pm: Avoid overflow when sorting pp_feature list

[AMD Official Use Only - AMD Internal Distribution Only]

>> memset(sort_feature, -1, sizeof(sort_feature));
...
>> if (sort_feature[feature_index] < 0)
      continue;

When the array type is changed from int8_t to int16_t, the code logic of this 
memset() may not correctly initialize all elements to '-1'.
Please modify this code together to ensure that the subsequent code logic meets 
expectations.

Best Regards,
Kevin

-----Original Message-----
From: Lazar, Lijo <[email protected]>
Sent: Monday, March 2, 2026 2:23 PM
To: Kamal, Asad <[email protected]>; [email protected]
Cc: Zhang, Hawking <[email protected]>; Ma, Le <[email protected]>; Zhang, 
Morris <[email protected]>; Deucher, Alexander <[email protected]>; 
Wang, Yang(Kevin) <[email protected]>
Subject: Re: [PATCH] drm/amd/pm: Avoid overflow when sorting pp_feature list



On 02-Mar-26 11:42 AM, Asad Kamal wrote:
> pp_features sorting uses int8_t sort_feature[] to store driver feature
> enum indices. On newer ASICs the enum index can exceed 127, causing
> signed overflow and silently dropping entries from the output.
> Switch the array to int16_t so all enum indices are preserved.
>
> Signed-off-by: Asad Kamal <[email protected]>

Reviewed-by: Lijo Lazar <[email protected]>

Thanks,
Lijo

> ---
>   drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> index c471c0e2cbd1..326c86b920a2 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> @@ -880,7 +880,7 @@ static const char *smu_get_feature_name(struct 
> smu_context *smu,
>   size_t smu_cmn_get_pp_feature_mask(struct smu_context *smu,
>                                  char *buf)
>   {
> -     int8_t sort_feature[MAX(SMU_FEATURE_COUNT, SMU_FEATURE_MAX)];
> +     int16_t sort_feature[MAX(SMU_FEATURE_COUNT, SMU_FEATURE_MAX)];
>       struct smu_feature_bits feature_mask;
>       uint32_t features[2];
>       int i, feature_index;



Reply via email to