aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch135
1 files changed, 135 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch
new file mode 100644
index 00000000..e3ca9f1f
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1287-drm-powerplay-print-current-clock-level-when-dpm-is-.patch
@@ -0,0 +1,135 @@
+From 0e27716f1d3ed3f10d0e144efea08cd11d2567d7 Mon Sep 17 00:00:00 2001
+From: shaoyunl <shaoyun.liu@amd.com>
+Date: Tue, 19 Feb 2019 16:02:11 -0500
+Subject: [PATCH 1287/2940] drm/powerplay: print current clock level when dpm
+ is disabled on vg20
+
+When DPM for the specific clock is disabled, driver should still print out
+current clock info for rocm-smi support on vega20
+
+Change-Id: I8669c77bf153caa2cd63a575802eb58747151239
+Signed-off-by: shaoyunl <shaoyun.liu@amd.com>
+Reviewed-by: Eric Huang <JinhuiEric.Huang@amd.com>
+---
+ .../drm/amd/powerplay/hwmgr/vega20_hwmgr.c | 56 +++++++++----------
+ 1 file changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+index aad79affb081..c95e0f35ed7f 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+@@ -2641,9 +2641,8 @@ static int vega20_get_sclks(struct pp_hwmgr *hwmgr,
+ struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.gfx_table);
+ int i, count;
+
+- PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_GFXCLK].enabled,
+- "[GetSclks]: gfxclk dpm not enabled!\n",
+- return -EPERM);
++ if (!data->smu_features[GNLD_DPM_GFXCLK].enabled)
++ return -1;
+
+ count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
+ clocks->num_levels = count;
+@@ -2670,9 +2669,8 @@ static int vega20_get_memclocks(struct pp_hwmgr *hwmgr,
+ struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.mem_table);
+ int i, count;
+
+- PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_UCLK].enabled,
+- "[GetMclks]: uclk dpm not enabled!\n",
+- return -EPERM);
++ if (!data->smu_features[GNLD_DPM_UCLK].enabled)
++ return -1;
+
+ count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
+ clocks->num_levels = data->mclk_latency_table.count = count;
+@@ -2696,9 +2694,8 @@ static int vega20_get_dcefclocks(struct pp_hwmgr *hwmgr,
+ struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.dcef_table);
+ int i, count;
+
+- PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_DCEFCLK].enabled,
+- "[GetDcfclocks]: dcefclk dpm not enabled!\n",
+- return -EPERM);
++ if (!data->smu_features[GNLD_DPM_DCEFCLK].enabled)
++ return -1;
+
+ count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
+ clocks->num_levels = count;
+@@ -2719,9 +2716,8 @@ static int vega20_get_socclocks(struct pp_hwmgr *hwmgr,
+ struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.soc_table);
+ int i, count;
+
+- PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_SOCCLK].enabled,
+- "[GetSocclks]: socclk dpm not enabled!\n",
+- return -EPERM);
++ if (!data->smu_features[GNLD_DPM_SOCCLK].enabled)
++ return -1;
+
+ count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
+ clocks->num_levels = count;
+@@ -3137,10 +3133,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+ "Attempt to get current gfx clk Failed!",
+ return ret);
+
+- ret = vega20_get_sclks(hwmgr, &clocks);
+- PP_ASSERT_WITH_CODE(!ret,
+- "Attempt to get gfx clk levels Failed!",
+- return ret);
++ if (vega20_get_sclks(hwmgr, &clocks)) {
++ size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
++ now / 100);
++ break;
++ }
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+@@ -3154,10 +3151,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+ "Attempt to get current mclk freq Failed!",
+ return ret);
+
+- ret = vega20_get_memclocks(hwmgr, &clocks);
+- PP_ASSERT_WITH_CODE(!ret,
+- "Attempt to get memory clk levels Failed!",
+- return ret);
++ if (vega20_get_memclocks(hwmgr, &clocks)) {
++ size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
++ now / 100);
++ break;
++ }
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+@@ -3171,10 +3169,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+ "Attempt to get current socclk freq Failed!",
+ return ret);
+
+- ret = vega20_get_socclocks(hwmgr, &clocks);
+- PP_ASSERT_WITH_CODE(!ret,
+- "Attempt to get soc clk levels Failed!",
+- return ret);
++ if (vega20_get_socclocks(hwmgr, &clocks)) {
++ size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
++ now / 100);
++ break;
++ }
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+@@ -3200,10 +3199,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+ "Attempt to get current dcefclk freq Failed!",
+ return ret);
+
+- ret = vega20_get_dcefclocks(hwmgr, &clocks);
+- PP_ASSERT_WITH_CODE(!ret,
+- "Attempt to get dcefclk levels Failed!",
+- return ret);
++ if (vega20_get_dcefclocks(hwmgr, &clocks)) {
++ size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
++ now / 100);
++ break;
++ }
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+--
+2.17.1
+