Commit 8f13c0c6 authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki
Browse files

cpufreq: Don't skip cpufreq_frequency_table_cpuinfo()



The commit 6db0f533 ("cpufreq: preserve freq_table_sorted
across suspend/hibernate") unintentionally made a change where
cpufreq_frequency_table_cpuinfo() isn't getting called anymore
for old policies getting re-initialized.

This leads to potentially invalid values of policy->max and
policy->cpuinfo_max_freq.

Fix the issue by reverting the original commit and adding the condition
for just the sorting function.

Fixes: 6db0f533 ("cpufreq: preserve freq_table_sorted across suspend/hibernate")
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Cc: 6.19+ <stable@vger.kernel.org> # 6.19+
Link: https://patch.msgid.link/65ba5c45749267c82e8a87af3dc788b37a0b3f48.1773998611.git.viresh.kumar@linaro.org


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent c3692998
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -1427,12 +1427,9 @@ static int cpufreq_policy_online(struct cpufreq_policy *policy,
		 * If there is a problem with its frequency table, take it
		 * offline and drop it.
		 */
		if (policy->freq_table_sorted != CPUFREQ_TABLE_SORTED_ASCENDING &&
		    policy->freq_table_sorted != CPUFREQ_TABLE_SORTED_DESCENDING) {
		ret = cpufreq_table_validate_and_sort(policy);
		if (ret)
			goto out_offline_policy;
		}

		/* related_cpus should at least include policy->cpus. */
		cpumask_copy(policy->related_cpus, policy->cpus);
+4 −0
Original line number Diff line number Diff line
@@ -360,6 +360,10 @@ int cpufreq_table_validate_and_sort(struct cpufreq_policy *policy)
	if (policy_has_boost_freq(policy))
		policy->boost_supported = true;

	if (policy->freq_table_sorted == CPUFREQ_TABLE_SORTED_ASCENDING ||
	    policy->freq_table_sorted == CPUFREQ_TABLE_SORTED_DESCENDING)
		return 0;

	return set_freq_table_sorted(policy);
}