Skip to content

Commit 4ea5af0

Browse files
committed
Merge tag 'pm-6.17-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management fix from Rafael Rafael: "Fix a locking issue in the cpufreq core introduced recently and caught by lockdep (Christian Loehle)" * tag 'pm-6.17-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: cpufreq: Initialize cpufreq-based invariance before subsys
2 parents 74c7cc7 + 8ffe28b commit 4ea5af0

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

drivers/cpufreq/cpufreq.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2953,6 +2953,15 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
29532953
goto err_null_driver;
29542954
}
29552955

2956+
/*
2957+
* Mark support for the scheduler's frequency invariance engine for
2958+
* drivers that implement target(), target_index() or fast_switch().
2959+
*/
2960+
if (!cpufreq_driver->setpolicy) {
2961+
static_branch_enable_cpuslocked(&cpufreq_freq_invariance);
2962+
pr_debug("cpufreq: supports frequency invariance\n");
2963+
}
2964+
29562965
ret = subsys_interface_register(&cpufreq_interface);
29572966
if (ret)
29582967
goto err_boost_unreg;
@@ -2974,21 +2983,14 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
29742983
hp_online = ret;
29752984
ret = 0;
29762985

2977-
/*
2978-
* Mark support for the scheduler's frequency invariance engine for
2979-
* drivers that implement target(), target_index() or fast_switch().
2980-
*/
2981-
if (!cpufreq_driver->setpolicy) {
2982-
static_branch_enable_cpuslocked(&cpufreq_freq_invariance);
2983-
pr_debug("supports frequency invariance");
2984-
}
2985-
29862986
pr_debug("driver %s up and running\n", driver_data->name);
29872987
goto out;
29882988

29892989
err_if_unreg:
29902990
subsys_interface_unregister(&cpufreq_interface);
29912991
err_boost_unreg:
2992+
if (!cpufreq_driver->setpolicy)
2993+
static_branch_disable_cpuslocked(&cpufreq_freq_invariance);
29922994
remove_boost_sysfs_file();
29932995
err_null_driver:
29942996
write_lock_irqsave(&cpufreq_driver_lock, flags);

0 commit comments

Comments
 (0)