diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0649-drm-amd-pp-enable-power-limit-increase-in-OD-mode.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0649-drm-amd-pp-enable-power-limit-increase-in-OD-mode.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0649-drm-amd-pp-enable-power-limit-increase-in-OD-mode.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0649-drm-amd-pp-enable-power-limit-increase-in-OD-mode.patch new file mode 100644 index 00000000..c93aac7b --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0649-drm-amd-pp-enable-power-limit-increase-in-OD-mode.patch @@ -0,0 +1,70 @@ +From 89dec39c8e1904e81815a378bf25e0c0705a437c Mon Sep 17 00:00:00 2001 +From: Joseph Greathouse <Joseph.Greathouse@amd.com> +Date: Thu, 18 Oct 2018 14:57:45 -0500 +Subject: [PATCH 0649/2940] drm/amd/pp: enable power limit increase in OD mode + +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. + +v2: Moved dereference of hwmgr to after its validity check + +Signed-off-by: Joseph Greathouse <Joseph.Greathouse@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +index da9ff2cc2777..bf09735ea3ac 100644 +--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c ++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +@@ -966,6 +966,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; + + if (!hwmgr || !hwmgr->pm_en) + return -EINVAL; +@@ -978,7 +979,13 @@ 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) ++ max_power_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); +@@ -997,8 +1004,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.17.1 + |