Skip to content

Commit

Permalink
cpufreq: intel_pstate: Rearrange the storing of new EPP values
Browse files Browse the repository at this point in the history
Move the locking away from intel_pstate_set_energy_pref_index()
into its only caller and drop the (now redundant) return_pref label
from it.

Also move the "raw" EPP value check into the caller of that function,
so as to do it before acquiring the mutex, and reduce code duplication
related to the "raw" EPP values processing somewhat.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Rafael J. Wysocki committed Jul 27, 2020
1 parent 80e3036 commit 3da97d4
Showing 1 changed file with 15 additions and 20 deletions.
35 changes: 15 additions & 20 deletions drivers/cpufreq/intel_pstate.c
Original file line number Diff line number Diff line change
Expand Up @@ -649,28 +649,18 @@ static int intel_pstate_set_energy_pref_index(struct cpudata *cpu_data,
if (!pref_index)
epp = cpu_data->epp_default;

mutex_lock(&intel_pstate_limits_lock);

if (boot_cpu_has(X86_FEATURE_HWP_EPP)) {
u64 value;

ret = rdmsrl_on_cpu(cpu_data->cpu, MSR_HWP_REQUEST, &value);
if (ret)
goto return_pref;
return ret;

value &= ~GENMASK_ULL(31, 24);

if (use_raw) {
if (raw_epp > 255) {
ret = -EINVAL;
goto return_pref;
}
value |= (u64)raw_epp << 24;
ret = wrmsrl_on_cpu(cpu_data->cpu, MSR_HWP_REQUEST, value);
goto return_pref;
}

if (epp == -EINVAL)
if (use_raw)
epp = raw_epp;
else if (epp == -EINVAL)
epp = epp_values[pref_index - 1];

value |= (u64)epp << 24;
Expand All @@ -680,8 +670,6 @@ static int intel_pstate_set_energy_pref_index(struct cpudata *cpu_data,
epp = (pref_index - 1) << 2;
ret = intel_pstate_set_epb(cpu_data->cpu, epp);
}
return_pref:
mutex_unlock(&intel_pstate_limits_lock);

return ret;
}
Expand All @@ -708,8 +696,8 @@ static ssize_t store_energy_performance_preference(
struct cpudata *cpu_data = all_cpu_data[policy->cpu];
char str_preference[21];
bool raw = false;
ssize_t ret;
u32 epp = 0;
int ret;

ret = sscanf(buf, "%20s", str_preference);
if (ret != 1)
Expand All @@ -724,14 +712,21 @@ static ssize_t store_energy_performance_preference(
if (ret)
return ret;

if (epp > 255)
return -EINVAL;

raw = true;
}

mutex_lock(&intel_pstate_limits_lock);

ret = intel_pstate_set_energy_pref_index(cpu_data, ret, raw, epp);
if (ret)
return ret;
if (!ret)
ret = count;

return count;
mutex_unlock(&intel_pstate_limits_lock);

return ret;
}

static ssize_t show_energy_performance_preference(
Expand Down

0 comments on commit 3da97d4

Please sign in to comment.