[PATCH v2] drm/amd/pm: workaround for compute workload type on some skus

Lazar, Lijo lijo.lazar at amd.com
Fri Jun 9 07:34:59 UTC 2023



On 6/9/2023 12:08 PM, Kenneth Feng wrote:
> On smu 13.0.0, the compute workload type cannot be set on all the skus
> due to some other problems. This workaround is to make sure compute workload type
> can also run on some specific skus.
> 
> v2: keep the variable consistent
> 
> Signed-off-by: Kenneth Feng <kenneth.feng at amd.com>

Acked-by: Lijo Lazar <lijo.lazar at amd.com>

Thanks,
Lijo

> ---
>   .../drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c  | 33 +++++++++++++++++--
>   1 file changed, 31 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
> index e2265f50bacc..5e9e507a710e 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
> @@ -2179,10 +2179,39 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,
>   		}
>   	}
>   
> -	/* conv PP_SMC_POWER_PROFILE* to WORKLOAD_PPLIB_*_BIT */
> -	workload_type = smu_cmn_to_asic_specific_index(smu,
> +	if (smu->power_profile_mode == PP_SMC_POWER_PROFILE_COMPUTE &&
> +		(((smu->adev->pdev->device == 0x744C) && (smu->adev->pdev->revision == 0xC8)) ||
> +		((smu->adev->pdev->device == 0x744C) && (smu->adev->pdev->revision == 0xCC)))) {
> +		ret = smu_cmn_update_table(smu,
> +					   SMU_TABLE_ACTIVITY_MONITOR_COEFF,
> +					   WORKLOAD_PPLIB_COMPUTE_BIT,
> +					   (void *)(&activity_monitor_external),
> +					   false);
> +		if (ret) {
> +			dev_err(smu->adev->dev, "[%s] Failed to get activity monitor!", __func__);
> +			return ret;
> +		}
> +
> +		ret = smu_cmn_update_table(smu,
> +					   SMU_TABLE_ACTIVITY_MONITOR_COEFF,
> +					   WORKLOAD_PPLIB_CUSTOM_BIT,
> +					   (void *)(&activity_monitor_external),
> +					   true);
> +		if (ret) {
> +			dev_err(smu->adev->dev, "[%s] Failed to set activity monitor!", __func__);
> +			return ret;
> +		}
> +
> +		workload_type = smu_cmn_to_asic_specific_index(smu,
> +						       CMN2ASIC_MAPPING_WORKLOAD,
> +						       PP_SMC_POWER_PROFILE_CUSTOM);
> +	} else {
> +		/* conv PP_SMC_POWER_PROFILE* to WORKLOAD_PPLIB_*_BIT */
> +		workload_type = smu_cmn_to_asic_specific_index(smu,
>   						       CMN2ASIC_MAPPING_WORKLOAD,
>   						       smu->power_profile_mode);
> +	}
> +
>   	if (workload_type < 0)
>   		return -EINVAL;
>   


More information about the amd-gfx mailing list