[PATCH] cpufreq: Default governor initialisation before use
Ensure that the selected default cpufreq governor is initialised before used by the cpufreq driver on boot by using fs_initcall() instead of module_init(). Signed-off-by: Johannes Weiner <[EMAIL PROTECTED]> --- On boot, speedstep_init() calls into cpufreq_gov_dbs(). The driver has not yet been initialised by cpufreq_gov_dbs_init() and kondemand_wq is still NULL when it is dereferenced. Changing the drivers module_init() to fs_initcall() fixed it. The same is already done in the performance and userspace governor drivers. The patch migrates all governors to use fs_initcall() when being the default governor. drivers/cpufreq/cpufreq_conservative.c |4 drivers/cpufreq/cpufreq_ondemand.c |5 - drivers/cpufreq/cpufreq_performance.c |4 drivers/cpufreq/cpufreq_userspace.c|4 4 files changed, 16 insertions(+), 1 deletions(-) diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index 1bba997..5d3a04b 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c @@ -603,5 +603,9 @@ MODULE_DESCRIPTION ("'cpufreq_conservative' - A dynamic cpufreq governor for " "optimised for use in a battery environment"); MODULE_LICENSE ("GPL"); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE +fs_initcall(cpufreq_gov_dbs_init); +#else module_init(cpufreq_gov_dbs_init); +#endif module_exit(cpufreq_gov_dbs_exit); diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c index 369f445..d2af20d 100644 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c @@ -610,6 +610,9 @@ MODULE_DESCRIPTION("'cpufreq_ondemand' - A dynamic cpufreq governor for " "Low Latency Frequency Transition capable processors"); MODULE_LICENSE("GPL"); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND +fs_initcall(cpufreq_gov_dbs_init); +#else module_init(cpufreq_gov_dbs_init); +#endif module_exit(cpufreq_gov_dbs_exit); - diff --git a/drivers/cpufreq/cpufreq_performance.c b/drivers/cpufreq/cpufreq_performance.c index e8e1451..df5fca3 100644 --- a/drivers/cpufreq/cpufreq_performance.c +++ b/drivers/cpufreq/cpufreq_performance.c @@ -60,5 +60,9 @@ MODULE_AUTHOR("Dominik Brodowski <[EMAIL PROTECTED]>"); MODULE_DESCRIPTION("CPUfreq policy governor 'performance'"); MODULE_LICENSE("GPL"); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE fs_initcall(cpufreq_gov_performance_init); +#else +module_init(cpufreq_gov_performance_init); +#endif module_exit(cpufreq_gov_performance_exit); diff --git a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c index 51bedab..f8cdde4 100644 --- a/drivers/cpufreq/cpufreq_userspace.c +++ b/drivers/cpufreq/cpufreq_userspace.c @@ -231,5 +231,9 @@ MODULE_AUTHOR ("Dominik Brodowski <[EMAIL PROTECTED]>, Russell King <[EMAIL PROTECTED] MODULE_DESCRIPTION ("CPUfreq policy governor 'userspace'"); MODULE_LICENSE ("GPL"); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE fs_initcall(cpufreq_gov_userspace_init); +#else +module_init(cpufreq_gov_userspace_init); +#endif module_exit(cpufreq_gov_userspace_exit); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] cpufreq: Default governor initialisation before use
Ensure that the selected default cpufreq governor is initialised before used by the cpufreq driver on boot by using fs_initcall() instead of module_init(). Signed-off-by: Johannes Weiner [EMAIL PROTECTED] --- On boot, speedstep_init() calls into cpufreq_gov_dbs(). The driver has not yet been initialised by cpufreq_gov_dbs_init() and kondemand_wq is still NULL when it is dereferenced. Changing the drivers module_init() to fs_initcall() fixed it. The same is already done in the performance and userspace governor drivers. The patch migrates all governors to use fs_initcall() when being the default governor. drivers/cpufreq/cpufreq_conservative.c |4 drivers/cpufreq/cpufreq_ondemand.c |5 - drivers/cpufreq/cpufreq_performance.c |4 drivers/cpufreq/cpufreq_userspace.c|4 4 files changed, 16 insertions(+), 1 deletions(-) diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index 1bba997..5d3a04b 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c @@ -603,5 +603,9 @@ MODULE_DESCRIPTION ('cpufreq_conservative' - A dynamic cpufreq governor for optimised for use in a battery environment); MODULE_LICENSE (GPL); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE +fs_initcall(cpufreq_gov_dbs_init); +#else module_init(cpufreq_gov_dbs_init); +#endif module_exit(cpufreq_gov_dbs_exit); diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c index 369f445..d2af20d 100644 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c @@ -610,6 +610,9 @@ MODULE_DESCRIPTION('cpufreq_ondemand' - A dynamic cpufreq governor for Low Latency Frequency Transition capable processors); MODULE_LICENSE(GPL); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND +fs_initcall(cpufreq_gov_dbs_init); +#else module_init(cpufreq_gov_dbs_init); +#endif module_exit(cpufreq_gov_dbs_exit); - diff --git a/drivers/cpufreq/cpufreq_performance.c b/drivers/cpufreq/cpufreq_performance.c index e8e1451..df5fca3 100644 --- a/drivers/cpufreq/cpufreq_performance.c +++ b/drivers/cpufreq/cpufreq_performance.c @@ -60,5 +60,9 @@ MODULE_AUTHOR(Dominik Brodowski [EMAIL PROTECTED]); MODULE_DESCRIPTION(CPUfreq policy governor 'performance'); MODULE_LICENSE(GPL); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE fs_initcall(cpufreq_gov_performance_init); +#else +module_init(cpufreq_gov_performance_init); +#endif module_exit(cpufreq_gov_performance_exit); diff --git a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c index 51bedab..f8cdde4 100644 --- a/drivers/cpufreq/cpufreq_userspace.c +++ b/drivers/cpufreq/cpufreq_userspace.c @@ -231,5 +231,9 @@ MODULE_AUTHOR (Dominik Brodowski [EMAIL PROTECTED], Russell King [EMAIL PROTECTED] MODULE_DESCRIPTION (CPUfreq policy governor 'userspace'); MODULE_LICENSE (GPL); +#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE fs_initcall(cpufreq_gov_userspace_init); +#else +module_init(cpufreq_gov_userspace_init); +#endif module_exit(cpufreq_gov_userspace_exit); -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/