<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-size: 11pt;">Hi Evan,</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">thank you for explaining this background reason. </span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">you want to support more hwmon sensor in smu driver.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">but in this patch, </span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">I have a few different opinions</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span></span></div>
<div style="">
<ol style="">
<li style=""><font color="#000000" face="Calibri, Arial, Helvetica, sans-serif"><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;">could you move
</span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;"><i>smu11_thermal_policy</i></span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;"> from
</span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;"><i>smu_11_0.h</i></span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;"> to
</span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;"><i>smu_v11_0.c</i></span><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;">, i think shouldn't define any data in header file.</span></font><font color="#201f1e"><span style="font-size: 14.6667px;"><br>
</span></font></li><li style=""><font color="#000000" face="Calibri, Arial, Helvetica, sans-serif"><span style="font-size: 12pt;"><i><span style="color: rgb(32, 31, 30); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; text-align: start; background-color: rgb(255, 255, 255); display: inline !important;">+static
 const struct smu_temperature_range smu11_thermal_policy[] =</span><br style="color: rgb(32, 31, 30); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; text-align: start; background-color: rgb(255, 255, 255)">
<span style="color: rgb(32, 31, 30); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; text-align: start; background-color: rgb(255, 255, 255); display: inline !important;">+{</span><br style="color: rgb(32, 31, 30); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; text-align: start; background-color: rgb(255, 255, 255)">
<span style="color: rgb(32, 31, 30); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; text-align: start; background-color: rgb(255, 255, 255); display: inline !important;">+       {-273150,  99000, 99000, -273150, 99000, 99000, -273150, 99000,
 99000},</span><br style="color: rgb(32, 31, 30); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; text-align: start; background-color: rgb(255, 255, 255)">
<span style="color: rgb(32, 31, 30); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; text-align: start; background-color: rgb(255, 255, 255); display: inline !important;"><b>+       { 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000,
 120000}, //not used in this patch, why do you want to do?</b></span><br style="color: rgb(32, 31, 30); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; text-align: start; background-color: rgb(255, 255, 255)">
<span style="color: rgb(32, 31, 30); font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; text-align: start; background-color: rgb(255, 255, 255); display: inline !important;">+};</span></i><br>
</span></font></li><li style=""><font color="#201f1e"><span style="font-size: 11pt; font-family: Calibri, Helvetica, sans-serif;">the smu driver will use 0 as min
</span><span style="font-size: 14.6667px;"><span style="font-family: Calibri, Helvetica, sans-serif; text-align: start; background-color: rgb(255, 255, 255); display: inline !important; font-size: 11pt;">temperature to set hardware register, but it will show
 273.15 <span style="font-family: Calibri, Helvetica, sans-serif; background-color: rgb(255, 255, 255); display: inline !important">as min value.</span> in hwmon sensor </span><span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; text-align: start; background-color: rgb(255, 255, 255); display: inline !important"><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">I think there is something wrong with this.</span><br>
</span></span></font></li><li style=""><font color="#201f1e"><span style="font-size: 14.6667px;"><span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; text-align: start; background-color: rgb(255, 255, 255); display: inline !important"><span><span style="font-family: Calibri, Helvetica, sans-serif; background-color: rgb(255, 255, 255); display: inline !important; font-size: 11pt;"><i>memcpy(&range,
 &smu11_thermal_policy[0], sizeof(struct smu_temperature_range));</i></span><span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; background-color: rgb(255, 255, 255); display: inline !important"><i><br>
</i><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 11pt;">although I know the meaning of this code, but I think this is not very good.</span></span></span></span></span></font></li></ol>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-size: 11pt;">Best Regards,</span><br>
<span style="font-size: 11pt;">Kevin</span></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Quan, Evan <Evan.Quan@amd.com><br>
<b>Sent:</b> Tuesday, August 20, 2019 2:50 PM<br>
<b>To:</b> Wang, Kevin(Yang) <Kevin1.Wang@amd.com>; Feng, Kenneth <Kenneth.Feng@amd.com>; amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</font>
<div> </div>
</div>
<style>
<!--
@font-face
        {font-family:SimSun}
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:SimSun}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:link, span.x_MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.x_MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
p.x_msonormal0, li.x_msonormal0, div.x_msonormal0
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
p.x_xmsonormal, li.x_xmsonormal, div.x_xmsonormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
p.x_xmsoplaintext, li.x_xmsoplaintext, div.x_xmsoplaintext
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
p.x_xmsonormal0, li.x_xmsonormal0, div.x_xmsonormal0
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
p.x_xmsochpdefault, li.x_xmsochpdefault, div.x_xmsochpdefault
        {margin-right:0in;
        margin-left:0in;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif}
span.x_xmsohyperlink
        {color:blue;
        text-decoration:underline}
span.x_xmsohyperlinkfollowed
        {color:purple;
        text-decoration:underline}
span.x_xemailstyle18
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_xemailstyle19
        {font-family:"Calibri",sans-serif;
        color:#1F497D}
span.x_xemailstyle20
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_xemailstyle21
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_xemailstyle22
        {font-family:"Calibri",sans-serif;
        color:#1F497D}
span.x_xplaintextchar
        {font-family:"Calibri",sans-serif}
span.x_EmailStyle32
        {font-family:"Calibri",sans-serif;
        color:windowtext}
.x_MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:1.0in 1.25in 1.0in 1.25in}
div.x_WordSection1
        {}
-->
</style>
<div lang="EN-US" link="blue" vlink="purple">
<div class="x_WordSection1">
<p class="x_MsoNormal">Hi Kevin,</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">smu11_thermal_policy provides the default thermal policy if the ASIC does not provide its own(e.g. Navi10). It’s not ASIC specific.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Btw I think we should have enough information to provide Navi10’s own settings(for temp2/3) in navi10_get_thermal_temperature_range().</p>
<p class="x_MsoNormal">Can you help to add them?</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Please refer to the following descriptions for those thermal interfaces.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">* - temp[1-3]_input: the on die GPU temperature in millidegrees Celsius</p>
<p class="x_MsoNormal">*   - temp2_input and temp3_input are supported on SOC15 dGPUs only</p>
<p class="x_MsoNormal">*</p>
<p class="x_MsoNormal">* - temp[1-3]_label: temperature channel label</p>
<p class="x_MsoNormal">*   - temp2_label and temp3_label are supported on SOC15 dGPUs only</p>
<p class="x_MsoNormal">*</p>
<p class="x_MsoNormal">* - temp[1-3]_crit: temperature critical max value in millidegrees Celsius</p>
<p class="x_MsoNormal">*   - temp2_crit and temp3_crit are supported on SOC15 dGPUs only</p>
<p class="x_MsoNormal">*</p>
<p class="x_MsoNormal">* - temp[1-3]_crit_hyst: temperature hysteresis for critical limit in millidegrees Celsius</p>
<p class="x_MsoNormal">*   - temp2_crit_hyst and temp3_crit_hyst are supported on SOC15 dGPUs only</p>
<p class="x_MsoNormal">*</p>
<p class="x_MsoNormal">* - temp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius</p>
<p class="x_MsoNormal">*   - these are supported on SOC15 dGPUs only</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Regards,</p>
<p class="x_MsoNormal">Evan</p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_MsoNormal"><b>From:</b> Wang, Kevin(Yang) <Kevin1.Wang@amd.com> <br>
<b>Sent:</b> Tuesday, August 20, 2019 1:44 PM<br>
<b>To:</b> Feng, Kenneth <Kenneth.Feng@amd.com>; Quan, Evan <Evan.Quan@amd.com>; amd-gfx@lists.freedesktop.org<br>
<b>Subject:</b> Re: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_MsoNormal"> </p>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">I don't recommend it.</span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">each asic maybe has different thermal policy, you can custom this value in asic file <arcturus_ppt.c> .</span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">and your patch define a new array in smu_v11_0.h header file.</span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">it's never done that before, and the code looks is not clearly. </span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">Best Regards,<br>
Kevin</span></p>
</div>
<div class="x_MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="x_divRplyFwdMsg">
<p class="x_MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> Feng, Kenneth <<a href="mailto:Kenneth.Feng@amd.com">Kenneth.Feng@amd.com</a>><br>
<b>Sent:</b> Tuesday, August 20, 2019 10:51 AM<br>
<b>To:</b> Quan, Evan <<a href="mailto:Evan.Quan@amd.com">Evan.Quan@amd.com</a>>;
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a> <<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>><br>
<b>Cc:</b> Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</span>
</p>
<div>
<p class="x_MsoNormal"> </p>
</div>
</div>
<div>
<div>
<p class="x_xmsoplaintext">Reviewed-by: Kenneth Feng <<a href="mailto:kenneth.feng@amd.com">kenneth.feng@amd.com</a>></p>
<p class="x_xmsonormal"><span style="color:#1F497D"> </span></p>
<p class="x_xmsonormal"><span style="color:#1F497D"> </span></p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xmsonormal"><b>From:</b> Quan, Evan <br>
<b>Sent:</b> Tuesday, August 20, 2019 10:10 AM<br>
<b>To:</b> <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Cc:</b> Feng, Kenneth <<a href="mailto:Kenneth.Feng@amd.com">Kenneth.Feng@amd.com</a>>; Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_xmsonormal"> </p>
<p class="x_xmsonormal">Ping..</p>
<p class="x_xmsonormal"> </p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xmsonormal"><b>From:</b> Quan, Evan <br>
<b>Sent:</b> Monday, August 19, 2019 1:27 PM<br>
<b>To:</b> Feng, Kenneth <<a href="mailto:Kenneth.Feng@amd.com">Kenneth.Feng@amd.com</a>>; Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>>;
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_xmsonormal"> </p>
<p class="x_xmsonormal">Yes, the lowest settings for thermal controller is 0.</p>
<p class="x_xmsonormal"> </p>
<p class="x_xmsonormal">Regards</p>
<p class="x_xmsonormal">Evan</p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xmsonormal"><b>From:</b> Feng, Kenneth <<a href="mailto:Kenneth.Feng@amd.com">Kenneth.Feng@amd.com</a>>
<br>
<b>Sent:</b> Monday, August 19, 2019 1:12 PM<br>
<b>To:</b> Quan, Evan <<a href="mailto:Evan.Quan@amd.com">Evan.Quan@amd.com</a>>; Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>>;
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_xmsonormal"> </p>
<p class="x_xmsonormal"><span style="color:#1F497D">Hi Evan,</span></p>
<p class="x_xmsonormal"><span style="color:#1F497D">So due to the below code, we don’t get a chance to set -273.15, right?</span></p>
<p class="x_xmsonormal" style="margin-bottom:12.0pt">+       low = max(SMU_THERMAL_MINIMUM_ALERT_TEMP,<br>
+                       range.min / SMU_TEMPERATURE_UNITS_PER_CENTIGRADES);<br>
+       high = min(SMU_THERMAL_MAXIMUM_ALERT_TEMP,<br>
+                       range.max / SMU_TEMPERATURE_UNITS_PER_CENTIGRADES);</p>
<p class="x_xmsonormal"><span style="color:#1F497D"> </span></p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xmsonormal"><b>From:</b> amd-gfx [<a href="mailto:amd-gfx-bounces@lists.freedesktop.org">mailto:amd-gfx-bounces@lists.freedesktop.org</a>]
<b>On Behalf Of </b>Quan, Evan<br>
<b>Sent:</b> Monday, August 19, 2019 10:16 AM<br>
<b>To:</b> Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>>;
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Subject:</b> RE: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_xmsonormal"> </p>
<p class="x_xmsonormal"><span style="font-size:12.0pt; font-family:"Times New Roman",serif">[CAUTION: External Email]
</span></p>
<div>
<p class="x_xmsonormal">Comment inline</p>
<p class="x_xmsonormal"> </p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xmsonormal"><b>From:</b> Wang, Kevin(Yang) <<a href="mailto:Kevin1.Wang@amd.com">Kevin1.Wang@amd.com</a>>
<br>
<b>Sent:</b> Friday, August 16, 2019 7:04 PM<br>
<b>To:</b> Quan, Evan <<a href="mailto:Evan.Quan@amd.com">Evan.Quan@amd.com</a>>;
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Subject:</b> Re: [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</p>
</div>
</div>
<p class="x_xmsonormal"> </p>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">Hi Evan,</span></p>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">the temperature min value should be 0, not -273 on smu11.</span></p>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">you can refrence window driver code or register spec.</span></p>
</div>
<div>
<p class="x_xmsonormal"><i><span style="font-size:12.0pt; color:black">        output_ptr->operating_temperature_min_Limit = 0;                                                                                                                                  
     <br>
        output_ptr->operating_temperature_max_Limit = ppt_info->software_shutdown_temp;</span></i></p>
<p class="x_xmsonormal"><b><i>[Quan, Evan] There was a discussion over the min value(0 or -273.15) and we decided to use the later considering the OD case.</i></b></p>
<p class="x_xmsonormal"><b><i>All the existing and coming ASICs should  follow this design.</i></b></p>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">and in smu11, the thermal control has a 8bit register to set min and max value, and the unit is temperature.</span></p>
<p class="x_xmsonormal"><b><i>[Quan, Evan] That is still honored, no violation here.</i></b></p>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">so there is something wrong with this patch.</span></p>
</div>
<div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
</div>
<div>
<p class="x_xmsonormal"><span style="font-size:12.0pt; color:black">Best Regards,<br>
Kevin</span></p>
</div>
<div class="x_MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="x_x_divRplyFwdMsg">
<p class="x_xmsonormal"><b><span style="color:black">From:</span></b><span style="color:black"> amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org">amd-gfx-bounces@lists.freedesktop.org</a>> on behalf of Evan Quan <<a href="mailto:evan.quan@amd.com">evan.quan@amd.com</a>><br>
<b>Sent:</b> Friday, August 16, 2019 5:31 PM<br>
<b>To:</b> <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a> <<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>><br>
<b>Cc:</b> Quan, Evan <<a href="mailto:Evan.Quan@amd.com">Evan.Quan@amd.com</a>><br>
<b>Subject:</b> [PATCH] drm/amd/powerplay: correct SW smu11 thermal range settings</span>
</p>
<div>
<p class="x_xmsonormal"> </p>
</div>
</div>
<div>
<div>
<p class="x_xmsonormal">Problems with current settings:<br>
1. The min value was overrided to 0 on Vega20 & Navi10. While<br>
   the expected should be -273.15 C.<br>
2. The thermal min/max threshold was output in wrong unit on<br>
   Navi10 & Arcturus. As TEMP_RANGE_MIN/MAX is already in<br>
   millicelsius. And "*1000" in smu_v11_0_start_thermal_control<br>
   makes the output wrongly.<br>
<br>
Change-Id: I2f1866edd1baf264f521310343f492eaede26c33<br>
Signed-off-by: Evan Quan <<a href="mailto:evan.quan@amd.com">evan.quan@amd.com</a>><br>
---<br>
 drivers/gpu/drm/amd/powerplay/arcturus_ppt.c  | 10 ----<br>
 drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h |  6 +++<br>
 drivers/gpu/drm/amd/powerplay/navi10_ppt.c    |  5 +-<br>
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c     | 51 +++++++------------<br>
 drivers/gpu/drm/amd/powerplay/vega20_ppt.c    | 20 +++++---<br>
 5 files changed, 38 insertions(+), 54 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c<br>
index 4060607fbb35..1a1f64a9e1e0 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c<br>
@@ -880,23 +880,14 @@ static int arcturus_force_clk_levels(struct smu_context *smu,<br>
         return ret;<br>
 }<br>
 <br>
-static const struct smu_temperature_range arcturus_thermal_policy[] =<br>
-{<br>
-       {-273150,  99000, 99000, -273150, 99000, 99000, -273150, 99000, 99000},<br>
-       { 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000},<br>
-};<br>
-<br>
 static int arcturus_get_thermal_temperature_range(struct smu_context *smu,<br>
                                                 struct smu_temperature_range *range)<br>
 {<br>
-<br>
         PPTable_t *pptable = smu->smu_table.driver_pptable;<br>
 <br>
         if (!range)<br>
                 return -EINVAL;<br>
 <br>
-       memcpy(range, &arcturus_thermal_policy[0], sizeof(struct smu_temperature_range));<br>
-<br>
         range->max = pptable->TedgeLimit *<br>
                 SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
         range->edge_emergency_max = (pptable->TedgeLimit + CTF_OFFSET_EDGE) *<br>
@@ -910,7 +901,6 @@ static int arcturus_get_thermal_temperature_range(struct smu_context *smu,<br>
         range->mem_emergency_max = (pptable->TmemLimit + CTF_OFFSET_HBM)*<br>
                 SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
 <br>
-<br>
         return 0;<br>
 }<br>
 <br>
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h<br>
index 0a22fa48ff5a..59b2045e37e4 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h<br>
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h<br>
@@ -64,6 +64,12 @@<br>
 #define WORKLOAD_MAP(profile, workload) \<br>
         [profile] = {1, (workload)}<br>
 <br>
+static const struct smu_temperature_range smu11_thermal_policy[] =<br>
+{<br>
+       {-273150,  99000, 99000, -273150, 99000, 99000, -273150, 99000, 99000},<br>
+       { 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000},<br>
+};<br>
+<br>
 struct smu_11_0_cmn2aisc_mapping {<br>
         int     valid_mapping;<br>
         int     map_to;<br>
diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c<br>
index d7d4186b762f..e804d18f61d0 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c<br>
@@ -1505,9 +1505,8 @@ static int navi10_get_thermal_temperature_range(struct smu_context *smu,<br>
         if (!range || !powerplay_table)<br>
                 return -EINVAL;<br>
 <br>
-       /* The unit is temperature */<br>
-       range->min = 0;<br>
-       range->max = powerplay_table->software_shutdown_temp;<br>
+       range->max = powerplay_table->software_shutdown_temp *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
 <br>
         return 0;<br>
 }<br>
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c<br>
index df7b65360ac7..5f5fd3a88e48 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c<br>
@@ -1125,23 +1125,17 @@ static int smu_v11_0_get_current_clk_freq(struct smu_context *smu,<br>
 }<br>
 <br>
 static int smu_v11_0_set_thermal_range(struct smu_context *smu,<br>
-                                      struct smu_temperature_range *range)<br>
+                                      struct smu_temperature_range range)<br>
 {<br>
         struct amdgpu_device *adev = smu->adev;<br>
         int low = SMU_THERMAL_MINIMUM_ALERT_TEMP;<br>
         int high = SMU_THERMAL_MAXIMUM_ALERT_TEMP;<br>
         uint32_t val;<br>
 <br>
-       if (!range)<br>
-               return -EINVAL;<br>
-<br>
-       if (low < range->min)<br>
-               low = range->min;<br>
-       if (high > range->max)<br>
-               high = range->max;<br>
-<br>
-       low = max(SMU_THERMAL_MINIMUM_ALERT_TEMP, range->min);<br>
-       high = min(SMU_THERMAL_MAXIMUM_ALERT_TEMP, range->max);<br>
+       low = max(SMU_THERMAL_MINIMUM_ALERT_TEMP,<br>
+                       range.min / SMU_TEMPERATURE_UNITS_PER_CENTIGRADES);<br>
+       high = min(SMU_THERMAL_MAXIMUM_ALERT_TEMP,<br>
+                       range.max / SMU_TEMPERATURE_UNITS_PER_CENTIGRADES);<br>
 <br>
         if (low > high)<br>
                 return -EINVAL;<br>
@@ -1177,27 +1171,20 @@ static int smu_v11_0_enable_thermal_alert(struct smu_context *smu)<br>
 static int smu_v11_0_start_thermal_control(struct smu_context *smu)<br>
 {<br>
         int ret = 0;<br>
-       struct smu_temperature_range range = {<br>
-               TEMP_RANGE_MIN,<br>
-               TEMP_RANGE_MAX,<br>
-               TEMP_RANGE_MAX,<br>
-               TEMP_RANGE_MIN,<br>
-               TEMP_RANGE_MAX,<br>
-               TEMP_RANGE_MAX,<br>
-               TEMP_RANGE_MIN,<br>
-               TEMP_RANGE_MAX,<br>
-               TEMP_RANGE_MAX};<br>
+       struct smu_temperature_range range;<br>
         struct amdgpu_device *adev = smu->adev;<br>
 <br>
         if (!smu->pm_enabled)<br>
                 return ret;<br>
 <br>
+       memcpy(&range, &smu11_thermal_policy[0], sizeof(struct smu_temperature_range));<br>
+<br>
         ret = smu_get_thermal_temperature_range(smu, &range);<br>
         if (ret)<br>
                 return ret;<br>
 <br>
         if (smu->smu_table.thermal_controller_type) {<br>
-               ret = smu_v11_0_set_thermal_range(smu, &range);<br>
+               ret = smu_v11_0_set_thermal_range(smu, range);<br>
                 if (ret)<br>
                         return ret;<br>
 <br>
@@ -1210,17 +1197,15 @@ static int smu_v11_0_start_thermal_control(struct smu_context *smu)<br>
                         return ret;<br>
         }<br>
 <br>
-       adev->pm.dpm.thermal.min_temp = range.min * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_temp = range.max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_edge_emergency_temp = range.edge_emergency_max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.min_hotspot_temp = range.hotspot_min * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_hotspot_crit_temp = range.hotspot_crit_max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_hotspot_emergency_temp = range.hotspot_emergency_max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.min_mem_temp = range.mem_min * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_mem_crit_temp = range.mem_crit_max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_mem_emergency_temp = range.mem_emergency_max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.min_temp = range.min * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
-       adev->pm.dpm.thermal.max_temp = range.max * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       adev->pm.dpm.thermal.min_temp = range.min;<br>
+       adev->pm.dpm.thermal.max_temp = range.max;<br>
+       adev->pm.dpm.thermal.max_edge_emergency_temp = range.edge_emergency_max;<br>
+       adev->pm.dpm.thermal.min_hotspot_temp = range.hotspot_min;<br>
+       adev->pm.dpm.thermal.max_hotspot_crit_temp = range.hotspot_crit_max;<br>
+       adev->pm.dpm.thermal.max_hotspot_emergency_temp = range.hotspot_emergency_max;<br>
+       adev->pm.dpm.thermal.min_mem_temp = range.mem_min;<br>
+       adev->pm.dpm.thermal.max_mem_crit_temp = range.mem_crit_max;<br>
+       adev->pm.dpm.thermal.max_mem_emergency_temp = range.mem_emergency_max;<br>
 <br>
         return ret;<br>
 }<br>
diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c<br>
index acf075393c13..e14363182691 100644<br>
--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c<br>
+++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c<br>
@@ -3113,14 +3113,18 @@ static int vega20_get_thermal_temperature_range(struct smu_context *smu,<br>
         if (!range || !powerplay_table)<br>
                 return -EINVAL;<br>
 <br>
-       /* The unit is temperature */<br>
-       range->min = 0;<br>
-       range->max = powerplay_table->usSoftwareShutdownTemp;<br>
-       range->edge_emergency_max = (pptable->TedgeLimit + CTF_OFFSET_EDGE);<br>
-       range->hotspot_crit_max = pptable->ThotspotLimit;<br>
-       range->hotspot_emergency_max = (pptable->ThotspotLimit + CTF_OFFSET_HOTSPOT);<br>
-       range->mem_crit_max = pptable->ThbmLimit;<br>
-       range->mem_emergency_max = (pptable->ThbmLimit + CTF_OFFSET_HBM);<br>
+       range->max = powerplay_table->usSoftwareShutdownTemp *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       range->edge_emergency_max = (pptable->TedgeLimit + CTF_OFFSET_EDGE) *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       range->hotspot_crit_max = pptable->ThotspotLimit *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       range->hotspot_emergency_max = (pptable->ThotspotLimit + CTF_OFFSET_HOTSPOT) *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       range->mem_crit_max = pptable->ThbmLimit *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
+       range->mem_emergency_max = (pptable->ThbmLimit + CTF_OFFSET_HBM) *<br>
+               SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;<br>
 <br>
 <br>
         return 0;<br>
-- <br>
2.22.0<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>