Remove unnecessary variable smc_result and simplify the logic related. Variable smc_result is only being used to store the return value of function si_send_msg_to_smc() and then compare this value against constant PPSMC_Result_OK. In other cases this variable is not even used after storing a value in it (lines of code 2833 and 2838). Besides, by removing this variable the logic can be simplified and the number of nested IF statements reduced. Addresses-Coverity-ID: 1226969 Signed-off-by: Gustavo A. R. Silva <garsilva at embeddedor.com> --- drivers/gpu/drm/radeon/si_dpm.c | 49 ++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c index ee3e742..09ef41f 100644 --- a/drivers/gpu/drm/radeon/si_dpm.c +++ b/drivers/gpu/drm/radeon/si_dpm.c @@ -2800,42 +2800,37 @@ static int si_enable_smc_cac(struct radeon_device *rdev, { struct ni_power_info *ni_pi = ni_get_pi(rdev); struct si_power_info *si_pi = si_get_pi(rdev); - PPSMC_Result smc_result; int ret = 0; if (ni_pi->enable_cac) { - if (enable) { - if (!si_should_disable_uvd_powertune(rdev, radeon_new_state)) { - if (ni_pi->support_cac_long_term_average) { - smc_result = si_send_msg_to_smc(rdev, PPSMC_CACLongTermAvgEnable); - if (smc_result != PPSMC_Result_OK) - ni_pi->support_cac_long_term_average = false; - } - - smc_result = si_send_msg_to_smc(rdev, PPSMC_MSG_EnableCac); - if (smc_result != PPSMC_Result_OK) { - ret = -EINVAL; - ni_pi->cac_enabled = false; - } else { - ni_pi->cac_enabled = true; - } - - if (si_pi->enable_dte) { - smc_result = si_send_msg_to_smc(rdev, PPSMC_MSG_EnableDTE); - if (smc_result != PPSMC_Result_OK) - ret = -EINVAL; - } + if (enable && + !si_should_disable_uvd_powertune(rdev, radeon_new_state)) { + if (ni_pi->support_cac_long_term_average && + PPSMC_Result_OK != + si_send_msg_to_smc(rdev, PPSMC_CACLongTermAvgEnable)) + ni_pi->support_cac_long_term_average = false; + + if (si_send_msg_to_smc(rdev, PPSMC_MSG_EnableCac) != + PPSMC_Result_OK) { + ret = -EINVAL; + ni_pi->cac_enabled = false; + } else { + ni_pi->cac_enabled = true; } - } else if (ni_pi->cac_enabled) { - if (si_pi->enable_dte) - smc_result = si_send_msg_to_smc(rdev, PPSMC_MSG_DisableDTE); - smc_result = si_send_msg_to_smc(rdev, PPSMC_MSG_DisableCac); + if (si_pi->enable_dte && + si_send_msg_to_smc(rdev, PPSMC_MSG_EnableDTE) != + PPSMC_Result_OK) + ret = -EINVAL; + } else if (!enable && ni_pi->cac_enabled) { + if (si_pi->enable_dte) + si_send_msg_to_smc(rdev, PPSMC_MSG_DisableDTE); + si_send_msg_to_smc(rdev, PPSMC_MSG_DisableCac); ni_pi->cac_enabled = false; if (ni_pi->support_cac_long_term_average) - smc_result = si_send_msg_to_smc(rdev, PPSMC_CACLongTermAvgDisable); + si_send_msg_to_smc(rdev, PPSMC_CACLongTermAvgDisable); } } return ret; -- 2.5.0