[PATCH] drm/amd/pp: enable power limit increase in OD mode
Alex Deucher
alexdeucher at gmail.com
Thu Oct 11 03:26:40 UTC 2018
On Wed, Oct 10, 2018 at 7:25 PM Greathouse, Joseph
<Joseph.Greathouse at amd.com> wrote:
>
> OverDrive mode allows users to increase the maximum SCLK and MCLK
> frequencies beyond the default on the GPU. However, this may not
> results in large performance gains if the GPU then runs into its TDP
> power limit. This patch adds the capability to increase the power
> limit of a GPU above its default maximum.
>
> This is only allowed when overdrive is enabled in the ppfeaturemask,
> since this is an overdrive feature. The TDPODLimit value from the
> VBIOS describes how how much higher the TDP should be allowed to go
> over its default, in percentage.
>
> Signed-off-by: Joseph Greathouse <Joseph.Greathouse at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> index 75b56ae..5b0b6b6 100644
> --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> @@ -958,6 +958,7 @@ static int pp_dpm_switch_power_profile(void *handle,
> static int pp_set_power_limit(void *handle, uint32_t limit)
> {
> struct pp_hwmgr *hwmgr = handle;
> + uint32_t max_power_limit = hwmgr->default_power_limit;
>
> if (!hwmgr || !hwmgr->pm_en)
> return -EINVAL;
> @@ -970,7 +971,12 @@ static int pp_set_power_limit(void *handle, uint32_t limit)
> if (limit == 0)
> limit = hwmgr->default_power_limit;
>
> - if (limit > hwmgr->default_power_limit)
> + if (hwmgr->od_enabled) {
> + max_power_limit *= (100 + hwmgr->platform_descriptor.TDPODLimit);
> + max_power_limit /= 100;
> + }
> +
> + if (limit > max_power_limit)
> return -EINVAL;
>
> mutex_lock(&hwmgr->smu_lock);
> @@ -989,8 +995,13 @@ static int pp_get_power_limit(void *handle, uint32_t *limit, bool default_limit)
>
> mutex_lock(&hwmgr->smu_lock);
>
> - if (default_limit)
> + if (default_limit) {
> *limit = hwmgr->default_power_limit;
> + if (hwmgr->od_enabled) {
> + *limit *= (100 + hwmgr->platform_descriptor.TDPODLimit);
> + *limit /= 100;
> + }
> + }
> else
> *limit = hwmgr->power_limit;
>
> --
> 2.7.4
>
> _______________________________________________
> 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