<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Reviewed-by: Alex Deucher <alexander.deucher@amd.com><br>
</p>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> amd-gfx <amd-gfx-bounces@lists.freedesktop.org> on behalf of Rex Zhu <Rex.Zhu@amd.com><br>
<b>Sent:</b> Friday, January 5, 2018 6:38 AM<br>
<b>To:</b> amd-gfx@lists.freedesktop.org<br>
<b>Cc:</b> Zhu, Rex<br>
<b>Subject:</b> [PATCH 1/2] drm/amd/pp: Store stable Pstate clocks</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">User can use to calculate profiling ratios when<br>
set UMD Pstate.<br>
<br>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com><br>
<br>
Change-Id: I3c6b82ebface57eb969d474c57149e8658ab7014<br>
---<br>
drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 2 ++<br>
drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c | 3 +++<br>
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 14 ++++++++++++--<br>
drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 5 +++++<br>
drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 2 ++<br>
5 files changed, 24 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c<br>
index 0b8aa44..b83fe97 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c<br>
@@ -1189,6 +1189,8 @@ static int cz_phm_unforce_dpm_levels(struct pp_hwmgr *hwmgr)<br>
<br>
cz_hwmgr->sclk_dpm.soft_min_clk = table->entries[0].clk;<br>
cz_hwmgr->sclk_dpm.hard_min_clk = table->entries[0].clk;<br>
+ hwmgr->pstate_sclk = table->entries[0].clk;<br>
+ hwmgr->pstate_mclk = 0;<br>
<br>
level = cz_get_max_sclk_level(hwmgr) - 1;<br>
<br>
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c<br>
index 569073e..409a56b 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c<br>
@@ -451,6 +451,9 @@ static int rv_hwmgr_backend_init(struct pp_hwmgr *hwmgr)<br>
<br>
hwmgr->platform_descriptor.minimumClocksReductionPercentage = 50;<br>
<br>
+ hwmgr->pstate_sclk = RAVEN_UMD_PSTATE_GFXCLK;<br>
+ hwmgr->pstate_mclk = RAVEN_UMD_PSTATE_FCLK;<br>
+<br>
return result;<br>
}<br>
<br>
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c<br>
index 2cde7a8..72031bd 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c<br>
@@ -2652,8 +2652,10 @@ static int smu7_get_profiling_clk(struct pp_hwmgr *hwmgr, enum amd_dpm_forced_le<br>
break;<br>
}<br>
}<br>
- if (count < 0 || level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK)<br>
+ if (count < 0 || level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK) {<br>
*sclk_mask = 0;<br>
+ tmp_sclk = hwmgr->dyn_state.vddc_dependency_on_sclk->entries[0].clk;<br>
+ }<br>
<br>
if (level == AMD_DPM_FORCED_LEVEL_PROFILE_PEAK)<br>
*sclk_mask = hwmgr->dyn_state.vddc_dependency_on_sclk->count-1;<br>
@@ -2668,8 +2670,10 @@ static int smu7_get_profiling_clk(struct pp_hwmgr *hwmgr, enum amd_dpm_forced_le<br>
break;<br>
}<br>
}<br>
- if (count < 0 || level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK)<br>
+ if (count < 0 || level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK) {<br>
*sclk_mask = 0;<br>
+ tmp_sclk = table_info->vdd_dep_on_sclk->entries[0].clk;<br>
+ }<br>
<br>
if (level == AMD_DPM_FORCED_LEVEL_PROFILE_PEAK)<br>
*sclk_mask = table_info->vdd_dep_on_sclk->count - 1;<br>
@@ -2681,6 +2685,9 @@ static int smu7_get_profiling_clk(struct pp_hwmgr *hwmgr, enum amd_dpm_forced_le<br>
*mclk_mask = golden_dpm_table->mclk_table.count - 1;<br>
<br>
*pcie_mask = data->dpm_table.pcie_speed_table.count - 1;<br>
+ hwmgr->pstate_sclk = tmp_sclk;<br>
+ hwmgr->pstate_mclk = tmp_mclk;<br>
+<br>
return 0;<br>
}<br>
<br>
@@ -2692,6 +2699,9 @@ static int smu7_force_dpm_level(struct pp_hwmgr *hwmgr,<br>
uint32_t mclk_mask = 0;<br>
uint32_t pcie_mask = 0;<br>
<br>
+ if (hwmgr->pstate_sclk == 0)<br>
+ smu7_get_profiling_clk(hwmgr, level, &sclk_mask, &mclk_mask, &pcie_mask);<br>
+<br>
switch (level) {<br>
case AMD_DPM_FORCED_LEVEL_HIGH:<br>
ret = smu7_force_dpm_highest(hwmgr);<br>
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c<br>
index 4219004..cb35f4f 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c<br>
@@ -4172,6 +4172,8 @@ static int vega10_get_profiling_clk_mask(struct pp_hwmgr *hwmgr, enum amd_dpm_fo<br>
*sclk_mask = VEGA10_UMD_PSTATE_GFXCLK_LEVEL;<br>
*soc_mask = VEGA10_UMD_PSTATE_SOCCLK_LEVEL;<br>
*mclk_mask = VEGA10_UMD_PSTATE_MCLK_LEVEL;<br>
+ hwmgr->pstate_sclk = table_info->vdd_dep_on_sclk->entries[VEGA10_UMD_PSTATE_GFXCLK_LEVEL].clk;<br>
+ hwmgr->pstate_mclk = table_info->vdd_dep_on_mclk->entries[VEGA10_UMD_PSTATE_MCLK_LEVEL].clk;<br>
}<br>
<br>
if (level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK) {<br>
@@ -4213,6 +4215,9 @@ static int vega10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr,<br>
uint32_t mclk_mask = 0;<br>
uint32_t soc_mask = 0;<br>
<br>
+ if (hwmgr->pstate_sclk == 0)<br>
+ vega10_get_profiling_clk_mask(hwmgr, level, &sclk_mask, &mclk_mask, &soc_mask);<br>
+<br>
switch (level) {<br>
case AMD_DPM_FORCED_LEVEL_HIGH:<br>
ret = vega10_force_dpm_highest(hwmgr);<br>
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h<br>
index 5d92f13..0ac61e0 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h<br>
+++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h<br>
@@ -752,6 +752,8 @@ struct pp_hwmgr {<br>
enum amd_pp_profile_type current_power_profile;<br>
bool en_umd_pstate;<br>
bool od_enabled;<br>
+ uint32_t pstate_sclk;<br>
+ uint32_t pstate_mclk;<br>
};<br>
<br>
struct cgs_irq_src_funcs {<br>
-- <br>
1.9.1<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
amd-gfx@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" id="LPlnk477021" previewremoved="true">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>