Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpufreq: Simplify core code related to boost support

Notice that the boost_supported field in struct cpufreq_driver is
redundant, because the driver's ->set_boost callback may be left
unset if "boost" is not supported. Moreover, the only driver
populating the ->set_boost callback is acpi_cpufreq, so make it
avoid populating that callback if "boost" is not supported, rework
the core to check ->set_boost instead of boost_supported to
verify "boost" support and drop boost_supported which isn't
used any more.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

+9 -19
+2 -3
drivers/cpufreq/acpi-cpufreq.c
··· 164 164 int ret; 165 165 unsigned int val = 0; 166 166 167 - if (!acpi_cpufreq_driver.boost_supported) 167 + if (!acpi_cpufreq_driver.set_boost) 168 168 return -EINVAL; 169 169 170 170 ret = kstrtouint(buf, 10, &val); ··· 900 900 .resume = acpi_cpufreq_resume, 901 901 .name = "acpi-cpufreq", 902 902 .attr = acpi_cpufreq_attr, 903 - .set_boost = set_boost, 904 903 }; 905 904 906 905 static void __init acpi_cpufreq_boost_init(void) ··· 910 911 if (!msrs) 911 912 return; 912 913 913 - acpi_cpufreq_driver.boost_supported = true; 914 + acpi_cpufreq_driver.set_boost = set_boost; 914 915 acpi_cpufreq_driver.boost_enabled = boost_state(0); 915 916 916 917 cpu_notifier_register_begin();
+7 -15
drivers/cpufreq/cpufreq.c
··· 2332 2332 2333 2333 static bool cpufreq_boost_supported(void) 2334 2334 { 2335 - return likely(cpufreq_driver) && cpufreq_driver->boost_supported; 2335 + return likely(cpufreq_driver) && cpufreq_driver->set_boost; 2336 2336 } 2337 2337 2338 2338 static int create_boost_sysfs_file(void) 2339 2339 { 2340 2340 int ret; 2341 - 2342 - if (!cpufreq_boost_supported()) 2343 - return 0; 2344 - 2345 - /* 2346 - * Check if driver provides function to enable boost - 2347 - * if not, use cpufreq_boost_set_sw as default 2348 - */ 2349 - if (!cpufreq_driver->set_boost) 2350 - cpufreq_driver->set_boost = cpufreq_boost_set_sw; 2351 2341 2352 2342 ret = sysfs_create_file(cpufreq_global_kobject, &boost.attr); 2353 2343 if (ret) ··· 2361 2371 if (cpufreq_boost_supported()) 2362 2372 return 0; 2363 2373 2364 - cpufreq_driver->boost_supported = true; 2374 + cpufreq_driver->set_boost = cpufreq_boost_set_sw; 2365 2375 2366 2376 /* This will get removed on driver unregister */ 2367 2377 return create_boost_sysfs_file(); ··· 2421 2431 if (driver_data->setpolicy) 2422 2432 driver_data->flags |= CPUFREQ_CONST_LOOPS; 2423 2433 2424 - ret = create_boost_sysfs_file(); 2425 - if (ret) 2426 - goto err_null_driver; 2434 + if (cpufreq_boost_supported()) { 2435 + ret = create_boost_sysfs_file(); 2436 + if (ret) 2437 + goto err_null_driver; 2438 + } 2427 2439 2428 2440 ret = subsys_interface_register(&cpufreq_interface); 2429 2441 if (ret)
-1
include/linux/cpufreq.h
··· 278 278 struct freq_attr **attr; 279 279 280 280 /* platform specific boost support code */ 281 - bool boost_supported; 282 281 bool boost_enabled; 283 282 int (*set_boost)(int state); 284 283 };