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

Quan, Evan Evan.Quan at amd.com
Tue Apr 2 02:19:52 UTC 2019


Thanks. Reviewed-by: Evan Quan <evan.quan at amd.com>

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Russell, Kent
> Sent: 2019年4月1日 19:27
> 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
> Vega20
> 
> Vega20 stores a CUSTOM profile on the GPU, but it may not be valid. Add a
> bool to vega20_hwmgr to determine whether or not a valid CUSTOM profile
> has been set, and use that to check when a user requests switching to the
> CUSTOM profile without passing in any arguments. Then if the CUSTOM
> profile has been set already, we can switch to it without providing the
> parameters again
> 
> Change-Id: If3e55ec8e5aa6921d4f3f1098f5778036cd69990
> Signed-off-by: Kent Russell <kent.russell at amd.com>
> ---
>  .../gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c   | 16
> +++++++++++++++-
>  .../gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h   |  2 ++
>  2 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> index 70dc641bf94d..39a547084e90 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> @@ -434,6 +434,7 @@ static int vega20_hwmgr_backend_init(struct
> pp_hwmgr *hwmgr)
>  	hwmgr->platform_descriptor.clockStep.memoryClock = 500;
> 
>  	data->total_active_cus = adev->gfx.cu_info.number;
> +	data->is_custom_profile_set = false;
> 
>  	return 0;
>  }
> @@ -3843,7 +3844,11 @@ static int vega20_set_power_profile_mode(struct
> pp_hwmgr *hwmgr, long *input, ui
>  	}
> 
>  	if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) {
> -		if (size < 10)
> +		struct vega20_hwmgr *data =
> +			(struct vega20_hwmgr *)(hwmgr->backend);
> +		if (size == 0 && !data->is_custom_profile_set)
> +			return -EINVAL;
> +		if (size < 10 && size != 0)
>  			return -EINVAL;
> 
>  		result = vega20_get_activity_monitor_coeff(hwmgr,
> @@ -3853,6 +3858,13 @@ static int vega20_set_power_profile_mode(struct
> pp_hwmgr *hwmgr, long *input, ui
>  				"[SetPowerProfile] Failed to get activity
> monitor!",
>  				return result);
> 
> +		/* If size==0, then we want to apply the already-configured
> +		 * CUSTOM profile again. Just apply it, since we checked its
> +		 * validity above
> +		 */
> +		if (size == 0)
> +			goto out;
> +
>  		switch (input[0]) {
>  		case 0: /* Gfxclk */
>  			activity_monitor.Gfx_FPS = input[1]; @@ -3903,11
> +3915,13 @@ static int vega20_set_power_profile_mode(struct pp_hwmgr
> *hwmgr, long *input, ui
>  		result = vega20_set_activity_monitor_coeff(hwmgr,
>  				(uint8_t *)(&activity_monitor),
>  				WORKLOAD_PPLIB_CUSTOM_BIT);
> +		data->is_custom_profile_set = true;
>  		PP_ASSERT_WITH_CODE(!result,
>  				"[SetPowerProfile] Failed to set activity
> monitor!",
>  				return result);
>  	}
> 
> +out:
>  	/* conv PP_SMC_POWER_PROFILE* to WORKLOAD_PPLIB_*_BIT */
>  	workload_type =
> 
> 	conv_power_profile_to_pplib_workload(power_profile_mode);
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
> index ac2a3118a0ae..2c3125f82b24 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.h
> @@ -531,6 +531,8 @@ struct vega20_hwmgr {
>  	bool                           pcie_parameters_override;
>  	uint32_t                       pcie_gen_level1;
>  	uint32_t                       pcie_width_level1;
> +
> +	bool                           is_custom_profile_set;
>  };
> 
>  #define VEGA20_DPM2_NEAR_TDP_DEC                      10
> --
> 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