<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:11pt;">
<div>Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com></div>
<div><font face="Times New Roman"> </font></div>
<div>Regards,<br>

Hawking</div>
<div><font face="等线">_____________________________________________<br>

<b>From:</b> Gui, Jack <Jack.Gui@amd.com> <br>

<b>Sent:</b> 2019<font face="微软雅黑">年</font>5<font face="微软雅黑">月</font>13<font face="微软雅黑">日</font> 11:32<br>

<b>To:</b> Zhang, Hawking <Hawking.Zhang@amd.com>; amd-gfx@lists.freedesktop.org<br>

<b>Subject:</b> RE: [PATCH 1/2] drm/amd/powerplay: Enable "disable dpm" feature to support swSMU debug</font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri"> << File: 0001-drm-amd-powerplay-Enable-disable-dpm-feature-to-supp.patch >> </font></div>
<div><font face="Calibri">Hi Hawking,</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">V2 patch attached: Return 0 directly and merge some check code.</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">Please help review again, thanks.</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">BR,</font></div>
<div><font face="Calibri">Jack Gui</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="等线">_____________________________________________<br>

<b>From:</b> Zhang, Hawking <Hawking.Zhang@amd.com> <br>

<b>Sent:</b> Sunday, May 12, 2019 11:18 AM<br>

<b>To:</b> Gui, Jack <Jack.Gui@amd.com>; amd-gfx@lists.freedesktop.org<br>

<b>Cc:</b> Gui, Jack <Jack.Gui@amd.com><br>

<b>Subject:</b> RE: [PATCH 1/2] drm/amd/powerplay: Enable "disable dpm" feature to support swSMU debug</font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri">Please check my comments inline. </font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">Regards,<br>

Hawking</font></div>
<div><font face="Calibri">-----Original Message-----<br>

From: amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org"><font color="#0563C1"><u>amd-gfx-bounces@lists.freedesktop.org</u></font></a>> On Behalf Of Chengming Gui<br>

Sent: 2019<font face="等线">年</font>5<font face="等线">月</font>10<font face="等线">日</font> 16:49<br>

To: <a href="mailto:amd-gfx@lists.freedesktop.org"><font color="#0563C1"><u>amd-gfx@lists.freedesktop.org</u></font></a><br>

Cc: Gui, Jack <<a href="mailto:Jack.Gui@amd.com"><font color="#0563C1"><u>Jack.Gui@amd.com</u></font></a>><br>

Subject: [PATCH 1/2] drm/amd/powerplay: Enable "disable dpm" feature to support swSMU debug</font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri">[CAUTION: External Email]</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">add pm_enabled to control the dpm off/on.</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">Signed-off-by: Chengming Gui <<a href="mailto:Jack.Gui@amd.com">Jack.Gui@amd.com</a>></font></div>
<div><font face="Calibri">---</font></div>
<div><font face="Calibri"> drivers/gpu/drm/amd/powerplay/amdgpu_smu.c     | 34 +++++++++++++++++++++++---</font></div>
<div><font face="Calibri"> drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h |  1 +</font></div>
<div><font face="Calibri"> drivers/gpu/drm/amd/powerplay/smu_v11_0.c      | 34 ++++++++++++++++++++++----</font></div>
<div><font face="Calibri"> 3 files changed, 60 insertions(+), 9 deletions(-)</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c</font></div>
<div><font face="Calibri">index 52d919a..99b2082 100644</font></div>
<div><font face="Calibri">--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c</font></div>
<div><font face="Calibri">+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c</font></div>
<div><font face="Calibri">@@ -198,6 +198,8 @@ int smu_sys_set_pp_table(struct smu_context *smu,  void *buf, size_t size)</font></div>
<div><font face="Calibri">        ATOM_COMMON_TABLE_HEADER *header = (ATOM_COMMON_TABLE_HEADER *)buf;</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return -EINVAL;</font></div>
<div><font face="Calibri">        if (header->usStructureSize != size) {</font></div>
<div><font face="Calibri">                pr_err("pp table size not matched !\n");</font></div>
<div><font face="Calibri">                return -EIO;</font></div>
<div><font face="Calibri">@@ -233,6 +235,8 @@ int smu_feature_init_dpm(struct smu_context *smu)</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri">        uint32_t unallowed_feature_mask[SMU_FEATURE_MAX/32];</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        mutex_lock(&feature->mutex);</font></div>
<div><font face="Calibri">        bitmap_fill(feature->allowed, SMU_FEATURE_MAX);</font></div>
<div><font face="Calibri">        mutex_unlock(&feature->mutex);</font></div>
<div><font face="Calibri">@@ -344,6 +348,7 @@ static int smu_early_init(void *handle)</font></div>
<div><font face="Calibri">        struct smu_context *smu = &adev->smu;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        smu->adev = adev;</font></div>
<div><font face="Calibri">+       smu->pm_enabled = amdgpu_dpm;</font></div>
<div><font face="Calibri">        mutex_init(&smu->mutex);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        return smu_set_funcs(adev);</font></div>
<div><font face="Calibri">@@ -353,6 +358,9 @@ static int smu_late_init(void *handle)  {</font></div>
<div><font face="Calibri">        struct amdgpu_device *adev = (struct amdgpu_device *)handle;</font></div>
<div><font face="Calibri">        struct smu_context *smu = &adev->smu;</font></div>
<div><font face="Calibri">+</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return 0;</font></div>
<div><font face="Calibri">        mutex_lock(&smu->mutex);</font></div>
<div><font face="Calibri">        smu_handle_task(&adev->smu,</font></div>
<div><font face="Calibri">                        smu->smu_dpm.dpm_level, @@ -746,6 +754,9 @@ static int smu_smc_table_hw_init(struct smu_context *smu,</font></div>
<div><font face="Calibri">         */</font></div>
<div><font face="Calibri">        ret = smu_set_tool_table_location(smu);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu_is_dpm_running(smu))</font></div>
<div><font face="Calibri">+               pr_info("dpm has been disabled\n");</font></div>
<div><font face="Calibri">+</font></div>
<div><font face="Calibri">        return ret;</font></div>
<div><font face="Calibri"> }</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -861,7 +872,10 @@ static int smu_hw_init(void *handle)</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        mutex_unlock(&smu->mutex);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">-       adev->pm.dpm_enabled = true;</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               adev->pm.dpm_enabled = false;</font></div>
<div><font face="Calibri">+       else</font></div>
<div><font face="Calibri">+               adev->pm.dpm_enabled = true;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        pr_info("SMU is initialized successfully!\n");</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -879,6 +893,8 @@ static int smu_hw_fini(void *handle)</font></div>
<div><font face="Calibri">        struct smu_table_context *table_context = &smu->smu_table;</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        if (!is_support_sw_smu(adev))</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -932,10 +948,12 @@ int smu_reset(struct smu_context *smu)</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri"> static int smu_suspend(void *handle)</font></div>
<div><font face="Calibri"> {</font></div>
<div><font face="Calibri">-       int ret;</font></div>
<div><font face="Calibri">+       int ret = 0;</font></div>
<div><font face="Calibri">        struct amdgpu_device *adev = (struct amdgpu_device *)handle;</font></div>
<div><font face="Calibri">        struct smu_context *smu = &adev->smu;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri" color="#1F3864">[Hawking]: Just return 0 directly if dpm was disabled. Don't change the default return value to 0 which means resume complete successfully </font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri">        if (!is_support_sw_smu(adev))</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -950,10 +968,12 @@ static int smu_suspend(void *handle)</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri"> static int smu_resume(void *handle)</font></div>
<div><font face="Calibri"> {</font></div>
<div><font face="Calibri">-       int ret;</font></div>
<div><font face="Calibri">+       int ret = 0;</font></div>
<div><font face="Calibri">        struct amdgpu_device *adev = (struct amdgpu_device *)handle;</font></div>
<div><font face="Calibri">        struct smu_context *smu = &adev->smu;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri" color="#1F3864">[Hawking]: similar as suspend, directly return 0 if dpm was disabled.</font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri">        if (!is_support_sw_smu(adev))</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -985,7 +1005,7 @@ int smu_display_configuration_change(struct smu_context *smu,</font></div>
<div><font face="Calibri">        int index = 0;</font></div>
<div><font face="Calibri">        int num_of_active_display = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">-       if (!is_support_sw_smu(smu->adev))</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled || !is_support_sw_smu(smu->adev))</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        if (!display_config)</font></div>
<div><font face="Calibri">@@ -1113,6 +1133,8 @@ static int smu_enable_umd_pstate(void *handle,</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        struct smu_context *smu = (struct smu_context*)(handle);</font></div>
<div><font face="Calibri">        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return -EINVAL;</font></div>
<div><font face="Calibri" color="#1F3864">[Hawking]: please merge this with the dpm_context check</font></div>
<div><font face="Times New Roman"> </font></div>
<div><font face="Calibri">        if (!smu_dpm_ctx->dpm_context)</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -1156,6 +1178,8 @@ int smu_adjust_power_state_dynamic(struct smu_context *smu,</font></div>
<div><font face="Calibri">        long workload;</font></div>
<div><font face="Calibri">        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return -EINVAL;</font></div>
<div><font face="Calibri">        if (!skip_display_settings) {</font></div>
<div><font face="Calibri">                ret = smu_display_config_changed(smu);</font></div>
<div><font face="Calibri">                if (ret) {</font></div>
<div><font face="Calibri">@@ -1164,6 +1188,8 @@ int smu_adjust_power_state_dynamic(struct smu_context *smu,</font></div>
<div><font face="Calibri">                }</font></div>
<div><font face="Calibri">        }</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return -EINVAL;</font></div>
<div><font face="Calibri">        ret = smu_apply_clocks_adjust_rules(smu);</font></div>
<div><font face="Calibri">        if (ret) {</font></div>
<div><font face="Calibri">                pr_err("Failed to apply clocks adjust rules!"); diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h</font></div>
<div><font face="Calibri">index 8905241..56b9812 100644</font></div>
<div><font face="Calibri">--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h</font></div>
<div><font face="Calibri">+++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h</font></div>
<div><font face="Calibri">@@ -401,6 +401,7 @@ struct smu_context</font></div>
<div><font face="Calibri">        uint32_t workload_setting[WORKLOAD_POLICY_MAX];</font></div>
<div><font face="Calibri">        uint32_t power_profile_mode;</font></div>
<div><font face="Calibri">        uint32_t default_power_profile_mode;</font></div>
<div><font face="Calibri">+       bool pm_enabled;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        uint32_t smc_if_version;</font></div>
<div><font face="Calibri"> };</font></div>
<div><font face="Calibri">diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c</font></div>
<div><font face="Calibri">index cd36c42..dee1e91 100644</font></div>
<div><font face="Calibri">--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c</font></div>
<div><font face="Calibri">+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c</font></div>
<div><font face="Calibri">@@ -360,6 +360,8 @@ static int smu_v11_0_init_power(struct smu_context *smu)  {</font></div>
<div><font face="Calibri">        struct smu_power_context *smu_power = &smu->smu_power;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return 0;</font></div>
<div><font face="Calibri">        if (smu_power->power_context || smu_power->power_context_size != 0)</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -376,6 +378,8 @@ static int smu_v11_0_fini_power(struct smu_context *smu)  {</font></div>
<div><font face="Calibri">        struct smu_power_context *smu_power = &smu->smu_power;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return 0;</font></div>
<div><font face="Calibri">        if (!smu_power->power_context || smu_power->power_context_size == 0)</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -641,6 +645,8 @@ static int smu_v11_0_set_min_dcef_deep_sleep(struct smu_context *smu)  {</font></div>
<div><font face="Calibri">        struct smu_table_context *table_context = &smu->smu_table;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return 0;</font></div>
<div><font face="Calibri">        if (!table_context)</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -669,6 +675,9 @@ static int smu_v11_0_set_tool_table_location(struct smu_context *smu)  static int smu_v11_0_init_display(struct smu_context *smu)  {</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri">+</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        ret = smu_send_smc_msg_with_param(smu, SMU_MSG_NumOfDisplays, 0);</font></div>
<div><font face="Calibri">        return ret;</font></div>
<div><font face="Calibri"> }</font></div>
<div><font face="Calibri">@@ -678,6 +687,8 @@ static int smu_v11_0_update_feature_enable_state(struct smu_context *smu, uint32</font></div>
<div><font face="Calibri">        uint32_t feature_low = 0, feature_high = 0;</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        if (feature_id >= 0 && feature_id < 31)</font></div>
<div><font face="Calibri">                feature_low = (1 << feature_id);</font></div>
<div><font face="Calibri">        else if (feature_id > 31 && feature_id < 63) @@ -784,10 +795,13 @@ static int smu_v11_0_system_features_control(struct smu_context *smu,</font></div>
<div><font face="Calibri">        uint32_t feature_mask[2];</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">-       ret = smu_send_smc_msg(smu, (en ? SMU_MSG_EnableAllSmuFeatures :</font></div>
<div><font face="Calibri">-                                    SMU_MSG_DisableAllSmuFeatures));</font></div>
<div><font face="Calibri">-       if (ret)</font></div>
<div><font face="Calibri">-               return ret;</font></div>
<div><font face="Calibri">+       if (smu->pm_enabled) {</font></div>
<div><font face="Calibri">+               ret = smu_send_smc_msg(smu, (en ? SMU_MSG_EnableAllSmuFeatures :</font></div>
<div><font face="Calibri">+                                            SMU_MSG_DisableAllSmuFeatures));</font></div>
<div><font face="Calibri">+               if (ret)</font></div>
<div><font face="Calibri">+                       return ret;</font></div>
<div><font face="Calibri">+       }</font></div>
<div><font face="Calibri">+</font></div>
<div><font face="Calibri">        ret = smu_feature_get_enabled_mask(smu, feature_mask, 2);</font></div>
<div><font face="Calibri">        if (ret)</font></div>
<div><font face="Calibri">                return ret;</font></div>
<div><font face="Calibri">@@ -804,6 +818,8 @@ static int smu_v11_0_notify_display_change(struct smu_context *smu)  {</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        if (smu_feature_is_enabled(smu, FEATURE_DPM_UCLK_BIT))</font></div>
<div><font face="Calibri">            ret = smu_send_smc_msg_with_param(smu, SMU_MSG_SetUclkFastSwitch, 1);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">@@ -816,6 +832,8 @@ smu_v11_0_get_max_sustainable_clock(struct smu_context *smu, uint32_t *clock,  {</font></div>
<div><font face="Calibri">        int ret = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        ret = smu_send_smc_msg_with_param(smu, SMU_MSG_GetDcModeMaxDpmFreq,</font></div>
<div><font face="Calibri">                                          clock_select << 16);</font></div>
<div><font face="Calibri">        if (ret) {</font></div>
<div><font face="Calibri">@@ -1072,6 +1090,8 @@ static int smu_v11_0_start_thermal_control(struct smu_context *smu)</font></div>
<div><font face="Calibri">        struct PP_TemperatureRange range;</font></div>
<div><font face="Calibri">        struct amdgpu_device *adev = smu->adev;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        smu_v11_0_get_thermal_range(smu, &range);</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        if (smu->smu_table.thermal_controller_type) { @@ -1242,6 +1262,8 @@ smu_v11_0_display_clock_voltage_request(struct smu_context *smu,</font></div>
<div><font face="Calibri">        PPCLK_e clk_select = 0;</font></div>
<div><font face="Calibri">        uint32_t clk_freq = clock_req->clock_freq_in_khz / 1000;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return -EINVAL;</font></div>
<div><font face="Calibri">        if (smu_feature_is_enabled(smu, FEATURE_DPM_DCEFCLK_BIT)) {</font></div>
<div><font face="Calibri">                switch (clk_type) {</font></div>
<div><font face="Calibri">                case amd_pp_dcef_clock:</font></div>
<div><font face="Calibri">@@ -1525,7 +1547,7 @@ static int smu_v11_0_get_power_profile_mode(struct smu_context *smu, char *buf)</font></div>
<div><font face="Calibri">                        "PD_Data_error_rate_coeff"};</font></div>
<div><font face="Calibri">        int result = 0;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">-       if (!buf)</font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled || !buf)</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        size += sprintf(buf + size, "%16s %s %s %s %s %s %s %s %s %s %s\n", @@ -1612,6 +1634,8 @@ static int smu_v11_0_set_power_profile_mode(struct smu_context *smu, long *input</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">        smu->power_profile_mode = input[size];</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">+       if (!smu->pm_enabled)</font></div>
<div><font face="Calibri">+               return ret;</font></div>
<div><font face="Calibri">        if (smu->power_profile_mode > PP_SMC_POWER_PROFILE_CUSTOM) {</font></div>
<div><font face="Calibri">                pr_err("Invalid power profile mode %d\n", smu->power_profile_mode);</font></div>
<div><font face="Calibri">                return -EINVAL;</font></div>
<div><font face="Calibri">--</font></div>
<div><font face="Calibri">2.7.4</font></div>
<div><font face="Calibri"> </font></div>
<div><font face="Calibri">_______________________________________________</font></div>
<div><font face="Calibri">amd-gfx mailing list</font></div>
<div><font face="Times New Roman"><a href="mailto:amd-gfx@lists.freedesktop.org"><font face="Calibri">amd-gfx@lists.freedesktop.org</font></a></font></div>
<div><font face="Times New Roman"><a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"><font face="Calibri">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</font></a></font></div>
<div><font face="Times New Roman"> </font></div>
</span></font>
</body>
</html>