[PATCH 2/2] drm/amdgpu: Allow switching to CUSTOM profile on smu7 v2

Quan, Evan Evan.Quan at amd.com
Thu Mar 28 01:26:41 UTC 2019


I think you should use smu7_profiling[PP_SMC_POWER_PROFILE_CUSTOM].bupdate_sclk/bupdate_mclk to judge whether there is saved custom profile.
That's where previous custom profile settings store in.
'tmp' is a temporary structures and you should not rely on that.

Regards,
Evan
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Russell, Kent
> Sent: Wednesday, March 27, 2019 9:59 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Russell, Kent <Kent.Russell at amd.com>
> Subject: [PATCH 2/2] drm/amdgpu: Allow switching to CUSTOM profile on
> smu7 v2
> 
> Allow changing to the CUSTOM profile without requiring the parameters
> being passed in each time. Store the values in the smu7_profiling table since
> it's defined here anyways
> 
> v2: Add check that CUSTOM was previously set
> 
> Change-Id: I6c5e3a1487e12410a6a7670a5cf1a6599253344d
> Signed-off-by: Kent Russell <kent.russell at amd.com>
> ---
>  .../gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c  | 32 ++++++++++++--
> -----
>  1 file changed, 21 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
> b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
> index 83d3d935f3ac..048757e8f494 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
> @@ -77,7 +77,7 @@
>  #define PCIE_BUS_CLK                10000
>  #define TCLK                        (PCIE_BUS_CLK / 10)
> 
> -static const struct profile_mode_setting smu7_profiling[7] =
> +static struct profile_mode_setting smu7_profiling[7] =
>  					{{0, 0, 0, 0, 0, 0, 0, 0},
>  					 {1, 0, 100, 30, 1, 0, 100, 10},
>  					 {1, 10, 0, 30, 0, 0, 0, 0},
> @@ -4984,17 +4984,27 @@ static int smu7_set_power_profile_mode(struct
> pp_hwmgr *hwmgr, long *input, uint
>  	mode = input[size];
>  	switch (mode) {
>  	case PP_SMC_POWER_PROFILE_CUSTOM:
> -		if (size < 8)
> +		if (size < 8 && size != 0)
>  			return -EINVAL;
> -
> -		tmp.bupdate_sclk = input[0];
> -		tmp.sclk_up_hyst = input[1];
> -		tmp.sclk_down_hyst = input[2];
> -		tmp.sclk_activity = input[3];
> -		tmp.bupdate_mclk = input[4];
> -		tmp.mclk_up_hyst = input[5];
> -		tmp.mclk_down_hyst = input[6];
> -		tmp.mclk_activity = input[7];
> +		/* If only CUSTOM is passed in, use the saved values. Check
> +		 * that we actually have a CUSTOM profile by ensuring that
> +		 * the "use sclk" or the "use mclk" bits are set
> +		 */
> +		tmp = smu7_profiling[PP_SMC_POWER_PROFILE_CUSTOM];
> +		if (size == 0) {
> +			if (tmp.bupdate_sclk == 0 && tmp.bupdate_mclk ==
> 0)
> +				return -EINVAL;
> +		} else {
> +			tmp.bupdate_sclk = input[0];
> +			tmp.sclk_up_hyst = input[1];
> +			tmp.sclk_down_hyst = input[2];
> +			tmp.sclk_activity = input[3];
> +			tmp.bupdate_mclk = input[4];
> +			tmp.mclk_up_hyst = input[5];
> +			tmp.mclk_down_hyst = input[6];
> +			tmp.mclk_activity = input[7];
> +			smu7_profiling[PP_SMC_POWER_PROFILE_CUSTOM]
> = tmp;
> +		}
>  		if (!smum_update_dpm_settings(hwmgr, &tmp)) {
>  			memcpy(&data->current_profile_setting, &tmp,
> sizeof(struct profile_mode_setting));
>  			hwmgr->power_profile_mode = mode;
> --
> 2.17.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list