On Wed, Oct 10, 2018 at 7:25 PM Greathouse, Joseph <[email protected]> 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 <[email protected]>
Reviewed-by: Alex Deucher <[email protected]> > --- > 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 > [email protected] > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
