diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch new file mode 100644 index 00000000..64455204 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch @@ -0,0 +1,73 @@ +From 0ff91bc1cbf8b6016ce744a71a190f88a5cf8a7c Mon Sep 17 00:00:00 2001 +From: Kent Russell <kent.russell@amd.com> +Date: Mon, 1 Apr 2019 06:43:39 -0400 +Subject: [PATCH 1724/2940] drm/amdgpu: Allow switching to CUSTOM profile on + Vega10 v2 + +Don't return an error if the CUSTOM profile is selected, just apply it +with the values saved to the GPU. But ensure that we zero out the +copy stored in adev to ensure that a valid profile has been submitted at +some point first + +v2: Fix comment that wasn't updated from previous patch + +Change-Id: Iafa5994e89ce00d3a124285b3435b581ec0e5d3b +Signed-off-by: Kent Russell <kent.russell@amd.com> +Reviewed-by: Evan Quan <evan.quan@amd.com> +--- + .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 23 ++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +index fe9a92fcfcbb..bed156d7f432 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +@@ -1427,6 +1427,15 @@ static int vega10_setup_default_dpm_tables(struct pp_hwmgr *hwmgr) + + vega10_setup_default_pcie_table(hwmgr); + ++ /* Zero out the saved copy of the CUSTOM profile ++ * This will be checked when trying to set the profile ++ * and will require that new values be passed in ++ */ ++ data->custom_profile_mode[0] = 0; ++ data->custom_profile_mode[1] = 0; ++ data->custom_profile_mode[2] = 0; ++ data->custom_profile_mode[3] = 0; ++ + /* save a copy of the default DPM table */ + memcpy(&(data->golden_dpm_table), &(data->dpm_table), + sizeof(struct vega10_dpm_table)); +@@ -4910,9 +4919,20 @@ static int vega10_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui + 1 << power_profile_mode); + + if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) { +- if (size == 0 || size > 4) ++ if (size != 0 && size != 4) + return -EINVAL; + ++ /* If size = 0 and the CUSTOM profile has been set already ++ * then just apply the profile. The copy stored in the hwmgr ++ * is zeroed out on init ++ */ ++ if (size == 0) { ++ if (data->custom_profile_mode[0] != 0) ++ goto out; ++ else ++ return -EINVAL; ++ } ++ + data->custom_profile_mode[0] = busy_set_point = input[0]; + data->custom_profile_mode[1] = FPS = input[1]; + data->custom_profile_mode[2] = use_rlc_busy = input[2]; +@@ -4923,6 +4943,7 @@ static int vega10_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui + use_rlc_busy << 16 | min_active_level<<24); + } + ++out: + hwmgr->power_profile_mode = power_profile_mode; + + return 0; +-- +2.17.1 + |