[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