Commit ff4e0caf authored by Rodrigo Vivi's avatar Rodrigo Vivi
Browse files

drm/i915/slpc: Fix inconsistent locked return



Fix for intel_guc_slpc_set_min_freq() warn:
inconsistent returns '&slpc->lock'.

v2: Avoid with_intel_runtime_pm with the
    internal goto/return. (Ashutosh)
    Also standardize the 'ret' if this came from
    the efficient setup. And avoid the 'unlikely'.

Fixes: 95ccf312 ("drm/i915/guc/slpc: Allow SLPC to use efficient frequency")
Reported-by: default avatarkernel test robot <lkp@intel.com>
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220830193537.52201-1-rodrigo.vivi@intel.com
parent 73c7a8a8
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -467,33 +467,33 @@ int intel_guc_slpc_set_min_freq(struct intel_guc_slpc *slpc, u32 val)

	/* Need a lock now since waitboost can be modifying min as well */
	mutex_lock(&slpc->lock);

	with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
	wakeref = intel_runtime_pm_get(&i915->runtime_pm);

	/* Ignore efficient freq if lower min freq is requested */
	ret = slpc_set_param(slpc,
			     SLPC_PARAM_IGNORE_EFFICIENT_FREQUENCY,
			     val < slpc->rp1_freq);
		if (unlikely(ret)) {
	if (ret) {
		i915_probe_error(i915, "Failed to toggle efficient freq (%pe)\n",
				 ERR_PTR(ret));
			return ret;
		goto out;
	}

	ret = slpc_set_param(slpc,
			     SLPC_PARAM_GLOBAL_MIN_GT_UNSLICE_FREQ_MHZ,
			     val);

		/* Return standardized err code for sysfs calls */
		if (ret)
			ret = -EIO;
	}

	if (!ret)
		slpc->min_freq_softlimit = val;

out:
	intel_runtime_pm_put(&i915->runtime_pm, wakeref);
	mutex_unlock(&slpc->lock);

	/* Return standardized err code for sysfs calls */
	if (ret)
		ret = -EIO;

	return ret;
}