From: Evan Quan Date: Sun, 5 May 2019 03:00:50 +0000 (+0800) Subject: drm/amd/powerplay: check for invalid profile_exit setting X-Git-Tag: v5.2-rc1~48^2~3^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db8a974f7e6966d73b4e6afa673c5b8bc31a111e;p=thirdparty%2Fkernel%2Flinux.git drm/amd/powerplay: check for invalid profile_exit setting profile_exit performance level setting is valid only when current mode is in profile mode. Signed-off-by: Evan Quan Reviewed-by: Tao Zhou Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 95144e49c7f9d..34471dbaa872a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -342,6 +342,16 @@ static ssize_t amdgpu_set_dpm_forced_performance_level(struct device *dev, if (current_level == level) return count; + /* profile_exit setting is valid only when current mode is in profile mode */ + if (!(current_level & (AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD | + AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK | + AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK | + AMD_DPM_FORCED_LEVEL_PROFILE_PEAK)) && + (level == AMD_DPM_FORCED_LEVEL_PROFILE_EXIT)) { + pr_err("Currently not in any profile mode!\n"); + return -EINVAL; + } + if (is_support_sw_smu(adev)) { mutex_lock(&adev->pm.mutex); if (adev->pm.dpm.thermal_active) {