Skip to content

Commit 2a6c727

Browse files
Lifeng Zhengrafaeljw
authored andcommitted
cpufreq: Initialize cpufreq-based frequency-invariance later
The cpufreq-based invariance is enabled in cpufreq_register_driver(), but never disabled after registration fails. Move the invariance initialization to where all other initializations have been successfully done to solve this problem. Fixes: 874f635 ("cpufreq: report whether cpufreq supports Frequency Invariance (FI)") Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com> Link: https://patch.msgid.link/20250709104145.2348017-2-zhenglifeng1@huawei.com [ rjw: New subject ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 5d6ecaa commit 2a6c727

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

drivers/cpufreq/cpufreq.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2940,15 +2940,6 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
29402940
cpufreq_driver = driver_data;
29412941
write_unlock_irqrestore(&cpufreq_driver_lock, flags);
29422942

2943-
/*
2944-
* Mark support for the scheduler's frequency invariance engine for
2945-
* drivers that implement target(), target_index() or fast_switch().
2946-
*/
2947-
if (!cpufreq_driver->setpolicy) {
2948-
static_branch_enable_cpuslocked(&cpufreq_freq_invariance);
2949-
pr_debug("supports frequency invariance");
2950-
}
2951-
29522943
if (driver_data->setpolicy)
29532944
driver_data->flags |= CPUFREQ_CONST_LOOPS;
29542945

@@ -2979,6 +2970,15 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
29792970
hp_online = ret;
29802971
ret = 0;
29812972

2973+
/*
2974+
* Mark support for the scheduler's frequency invariance engine for
2975+
* drivers that implement target(), target_index() or fast_switch().
2976+
*/
2977+
if (!cpufreq_driver->setpolicy) {
2978+
static_branch_enable_cpuslocked(&cpufreq_freq_invariance);
2979+
pr_debug("supports frequency invariance");
2980+
}
2981+
29822982
pr_debug("driver %s up and running\n", driver_data->name);
29832983
goto out;
29842984

0 commit comments

Comments
 (0)