diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0646-drm-amd-powerplay-error-out-when-force-clock-level-u.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0646-drm-amd-powerplay-error-out-when-force-clock-level-u.patch | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0646-drm-amd-powerplay-error-out-when-force-clock-level-u.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0646-drm-amd-powerplay-error-out-when-force-clock-level-u.patch new file mode 100644 index 00000000..fb212bb3 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0646-drm-amd-powerplay-error-out-when-force-clock-level-u.patch @@ -0,0 +1,86 @@ +From f523e7fd00efa8693a8882876c7689d65fb7a1f4 Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Wed, 17 Oct 2018 16:36:02 +0800 +Subject: [PATCH 0646/2940] drm/amd/powerplay: error out when force clock level + under auto dpm mode V2 + +Forcing clock level is supported under manual dpm mode only. Error out +when trying to set under manual mode. Instead of doing nothing and +reporting success. + +V2: update for mclk/pcie clock level settings also + +Signed-off-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 15 ++++++++++++--- + drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 11 +++++++---- + 2 files changed, 19 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +index 94055a485e01..59cc678de8c1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +@@ -704,7 +704,10 @@ static ssize_t amdgpu_set_pp_dpm_sclk(struct device *dev, + return ret; + + if (adev->powerplay.pp_funcs->force_clock_level) +- amdgpu_dpm_force_clock_level(adev, PP_SCLK, mask); ++ ret = amdgpu_dpm_force_clock_level(adev, PP_SCLK, mask); ++ ++ if (ret) ++ return -EINVAL; + + return count; + } +@@ -737,7 +740,10 @@ static ssize_t amdgpu_set_pp_dpm_mclk(struct device *dev, + return ret; + + if (adev->powerplay.pp_funcs->force_clock_level) +- amdgpu_dpm_force_clock_level(adev, PP_MCLK, mask); ++ ret = amdgpu_dpm_force_clock_level(adev, PP_MCLK, mask); ++ ++ if (ret) ++ return -EINVAL; + + return count; + } +@@ -770,7 +776,10 @@ static ssize_t amdgpu_set_pp_dpm_pcie(struct device *dev, + return ret; + + if (adev->powerplay.pp_funcs->force_clock_level) +- amdgpu_dpm_force_clock_level(adev, PP_PCIE, mask); ++ ret = amdgpu_dpm_force_clock_level(adev, PP_PCIE, mask); ++ ++ if (ret) ++ return -EINVAL; + + return count; + } +diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +index e8964cae6b93..da9ff2cc2777 100644 +--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c ++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +@@ -723,11 +723,14 @@ static int pp_dpm_force_clock_level(void *handle, + pr_info("%s was not implemented.\n", __func__); + return 0; + } ++ ++ if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) { ++ pr_info("force clock level is for dpm manual mode only.\n"); ++ return -EINVAL; ++ } ++ + mutex_lock(&hwmgr->smu_lock); +- if (hwmgr->dpm_level == AMD_DPM_FORCED_LEVEL_MANUAL) +- ret = hwmgr->hwmgr_func->force_clock_level(hwmgr, type, mask); +- else +- ret = -EINVAL; ++ ret = hwmgr->hwmgr_func->force_clock_level(hwmgr, type, mask); + mutex_unlock(&hwmgr->smu_lock); + return ret; + } +-- +2.17.1 + |