cpufreq: Fail driver register if it has adjust_perf without fast_switch
authorWyes Karny <wyes.karny@amd.com>
Mon, 29 May 2023 14:25:51 +0000 (14:25 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 15 Jun 2023 16:15:25 +0000 (18:15 +0200)
commitb4a11fa3331e163e177e76098fe1d8b12b87cf6b
tree0bde84560ef3272e9bfc4ad1e3866f1a625a2da7
parent858fd168a95c5b9669aac8db6c14a9aeab446375
cpufreq: Fail driver register if it has adjust_perf without fast_switch

If fast_switch_possible flag is set by the scaling driver, the governor
is free to select fast_switch function even if adjust_perf is set.  Some
scaling drivers which use adjust_perf don't set fast_switch thinking
that the governor would never fall back to fast_switch. But the governor
can fall back to fast_switch even in runtime if frequency invariance is
disabled due to some reason. This could crash the kernel if the driver
didn't set the fast_switch function pointer.

Therefore, fail driver registration if it has adjust_perf without
fast_switch.

Suggested-by: Rafael J. Wysocki <rafael@kernel.org>
Suggested-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Wyes Karny <wyes.karny@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/cpufreq.c
include/linux/cpufreq.h