| From 63808f2c8f69e194896171320d0de3cb2ccfc4e4 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 9 Dec 2024 12:52:37 -0600 |
| Subject: cpufreq/amd-pstate: convert mutex use to guard() |
| |
| From: Mario Limonciello <mario.limonciello@amd.com> |
| |
| [ Upstream commit 6c093d5a5b73ec1caf1e706510ae6031af2f9d43 ] |
| |
| Using scoped guard declaration will unlock mutexes automatically. |
| |
| Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com> |
| Link: https://lore.kernel.org/r/20241209185248.16301-5-mario.limonciello@amd.com |
| Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> |
| Stable-dep-of: 3ace20038e19 ("cpufreq/amd-pstate: Fix cpufreq_policy ref counting") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/cpufreq/amd-pstate.c | 32 ++++++++++++-------------------- |
| 1 file changed, 12 insertions(+), 20 deletions(-) |
| |
| diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c |
| index 03a5fd713ad59..bdaa19c25887b 100644 |
| --- a/drivers/cpufreq/amd-pstate.c |
| +++ b/drivers/cpufreq/amd-pstate.c |
| @@ -727,12 +727,12 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state) |
| pr_err("Boost mode is not supported by this processor or SBIOS\n"); |
| return -EOPNOTSUPP; |
| } |
| - mutex_lock(&amd_pstate_driver_lock); |
| + guard(mutex)(&amd_pstate_driver_lock); |
| + |
| ret = amd_pstate_cpu_boost_update(policy, state); |
| WRITE_ONCE(cpudata->boost_state, !ret ? state : false); |
| policy->boost_enabled = !ret ? state : false; |
| refresh_frequency_limits(policy); |
| - mutex_unlock(&amd_pstate_driver_lock); |
| |
| return ret; |
| } |
| @@ -823,7 +823,8 @@ static void amd_pstate_update_limits(unsigned int cpu) |
| if (!amd_pstate_prefcore) |
| return; |
| |
| - mutex_lock(&amd_pstate_driver_lock); |
| + guard(mutex)(&amd_pstate_driver_lock); |
| + |
| ret = amd_get_highest_perf(cpu, &cur_high); |
| if (ret) |
| goto free_cpufreq_put; |
| @@ -843,7 +844,6 @@ static void amd_pstate_update_limits(unsigned int cpu) |
| if (!highest_perf_changed) |
| cpufreq_update_policy(cpu); |
| |
| - mutex_unlock(&amd_pstate_driver_lock); |
| } |
| |
| /* |
| @@ -1172,11 +1172,11 @@ static ssize_t store_energy_performance_preference( |
| if (ret < 0) |
| return -EINVAL; |
| |
| - mutex_lock(&amd_pstate_limits_lock); |
| + guard(mutex)(&amd_pstate_limits_lock); |
| + |
| ret = amd_pstate_set_energy_pref_index(cpudata, ret); |
| - mutex_unlock(&amd_pstate_limits_lock); |
| |
| - return ret ?: count; |
| + return ret ? ret : count; |
| } |
| |
| static ssize_t show_energy_performance_preference( |
| @@ -1340,13 +1340,10 @@ EXPORT_SYMBOL_GPL(amd_pstate_update_status); |
| static ssize_t status_show(struct device *dev, |
| struct device_attribute *attr, char *buf) |
| { |
| - ssize_t ret; |
| |
| - mutex_lock(&amd_pstate_driver_lock); |
| - ret = amd_pstate_show_status(buf); |
| - mutex_unlock(&amd_pstate_driver_lock); |
| + guard(mutex)(&amd_pstate_driver_lock); |
| |
| - return ret; |
| + return amd_pstate_show_status(buf); |
| } |
| |
| static ssize_t status_store(struct device *a, struct device_attribute *b, |
| @@ -1355,9 +1352,8 @@ static ssize_t status_store(struct device *a, struct device_attribute *b, |
| char *p = memchr(buf, '\n', count); |
| int ret; |
| |
| - mutex_lock(&amd_pstate_driver_lock); |
| + guard(mutex)(&amd_pstate_driver_lock); |
| ret = amd_pstate_update_status(buf, p ? p - buf : count); |
| - mutex_unlock(&amd_pstate_driver_lock); |
| |
| return ret < 0 ? ret : count; |
| } |
| @@ -1640,13 +1636,11 @@ static int amd_pstate_epp_cpu_offline(struct cpufreq_policy *policy) |
| |
| min_perf = READ_ONCE(cpudata->lowest_perf); |
| |
| - mutex_lock(&amd_pstate_limits_lock); |
| + guard(mutex)(&amd_pstate_limits_lock); |
| |
| amd_pstate_update_perf(cpudata, min_perf, 0, min_perf, false); |
| amd_pstate_set_epp(cpudata, AMD_CPPC_EPP_BALANCE_POWERSAVE); |
| |
| - mutex_unlock(&amd_pstate_limits_lock); |
| - |
| return 0; |
| } |
| |
| @@ -1675,13 +1669,11 @@ static int amd_pstate_epp_resume(struct cpufreq_policy *policy) |
| struct amd_cpudata *cpudata = policy->driver_data; |
| |
| if (cpudata->suspended) { |
| - mutex_lock(&amd_pstate_limits_lock); |
| + guard(mutex)(&amd_pstate_limits_lock); |
| |
| /* enable amd pstate from suspend state*/ |
| amd_pstate_epp_reenable(cpudata); |
| |
| - mutex_unlock(&amd_pstate_limits_lock); |
| - |
| cpudata->suspended = false; |
| } |
| |
| -- |
| 2.39.5 |
| |