aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1724-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-Vega.patch
diff options
context:
space:
mode:
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.patch73
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
+