Re: [PATCH 2/2] drm/amd/powerplay: some cosmetic fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Series is:
Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx>

From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> on behalf of Evan Quan <evan.quan@xxxxxxx>
Sent: Tuesday, July 23, 2019 4:41 AM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx <amd-gfx@xxxxxxxxxxxxxxxxxxxxx>
Cc: Quan, Evan <Evan.Quan@xxxxxxx>
Subject: [PATCH 2/2] drm/amd/powerplay: some cosmetic fixes
 
Drop redundant check, duplicate check, duplicate setting
and fix the return value.

Change-Id: I04171bcac82f17152371d05e6958d4fc072c0f6b
Signed-off-by: Evan Quan <evan.quan@xxxxxxx>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c     | 33 +++++++++++-----------
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 30 ++++++++------------
 2 files changed, 28 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 866097d5cf26..aad3e105901b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -367,13 +367,6 @@ static ssize_t amdgpu_set_dpm_forced_performance_level(struct device *dev,
              (ddev->switch_power_state != DRM_SWITCH_POWER_ON))
                 return -EINVAL;
 
-       if (!amdgpu_sriov_vf(adev)) {
-               if (is_support_sw_smu(adev))
-                       current_level = smu_get_performance_level(&adev->smu);
-               else if (adev->powerplay.pp_funcs->get_performance_level)
-                       current_level = amdgpu_dpm_get_performance_level(adev);
-       }
-
         if (strncmp("low", buf, strlen("low")) == 0) {
                 level = AMD_DPM_FORCED_LEVEL_LOW;
         } else if (strncmp("high", buf, strlen("high")) == 0) {
@@ -397,17 +390,23 @@ static ssize_t amdgpu_set_dpm_forced_performance_level(struct device *dev,
                 goto fail;
         }
 
-        if (amdgpu_sriov_vf(adev)) {
-                if (amdgim_is_hwperf(adev) &&
-                    adev->virt.ops->force_dpm_level) {
-                        mutex_lock(&adev->pm.mutex);
-                        adev->virt.ops->force_dpm_level(adev, level);
-                        mutex_unlock(&adev->pm.mutex);
-                        return count;
-                } else {
-                        return -EINVAL;
+       /* handle sriov case here */
+       if (amdgpu_sriov_vf(adev)) {
+               if (amdgim_is_hwperf(adev) &&
+                   adev->virt.ops->force_dpm_level) {
+                       mutex_lock(&adev->pm.mutex);
+                       adev->virt.ops->force_dpm_level(adev, level);
+                       mutex_unlock(&adev->pm.mutex);
+                       return count;
+               } else {
+                       return -EINVAL;
                 }
-        }
+       }
+
+       if (is_support_sw_smu(adev))
+               current_level = smu_get_performance_level(&adev->smu);
+       else if (adev->powerplay.pp_funcs->get_performance_level)
+               current_level = amdgpu_dpm_get_performance_level(adev);
 
         if (current_level == level)
                 return count;
diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 266614e27392..a92d13b513da 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -1398,6 +1398,7 @@ int smu_adjust_power_state_dynamic(struct smu_context *smu,
 
         if (!smu->pm_enabled)
                 return -EINVAL;
+
         if (!skip_display_settings) {
                 ret = smu_display_config_changed(smu);
                 if (ret) {
@@ -1406,8 +1407,6 @@ int smu_adjust_power_state_dynamic(struct smu_context *smu,
                 }
         }
 
-       if (!smu->pm_enabled)
-               return -EINVAL;
         ret = smu_apply_clocks_adjust_rules(smu);
         if (ret) {
                 pr_err("Failed to apply clocks adjust rules!");
@@ -1426,9 +1425,14 @@ int smu_adjust_power_state_dynamic(struct smu_context *smu,
                 ret = smu_asic_set_performance_level(smu, level);
                 if (ret) {
                         ret = smu_default_set_performance_level(smu, level);
+                       if (ret) {
+                               pr_err("Failed to set performance level!");
+                               return ret;
+                       }
                 }
-               if (!ret)
-                       smu_dpm_ctx->dpm_level = level;
+
+               /* update the saved copy */
+               smu_dpm_ctx->dpm_level = level;
         }
 
         if (smu_dpm_ctx->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) {
@@ -1487,28 +1491,18 @@ enum amd_dpm_forced_level smu_get_performance_level(struct smu_context *smu)
 
 int smu_force_performance_level(struct smu_context *smu, enum amd_dpm_forced_level level)
 {
-       int ret = 0;
-       int i;
         struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
+       int ret = 0;
 
         if (!smu_dpm_ctx->dpm_context)
                 return -EINVAL;
 
-       for (i = 0; i < smu->adev->num_ip_blocks; i++) {
-               if (smu->adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SMC)
-                       break;
-       }
-
-
-       smu->adev->ip_blocks[i].version->funcs->enable_umd_pstate(smu, &level);
-       ret = smu_handle_task(smu, level,
-                             AMD_PP_TASK_READJUST_POWER_STATE);
+       ret = smu_enable_umd_pstate(smu, &level);
         if (ret)
                 return ret;
 
-       mutex_lock(&smu->mutex);
-       smu_dpm_ctx->dpm_level = level;
-       mutex_unlock(&smu->mutex);
+       ret = smu_handle_task(smu, level,
+                             AMD_PP_TASK_READJUST_POWER_STATE);
 
         return ret;
 }
--
2.22.0

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux