]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
cpufreq: Initialise default governor before use
authorJohannes Weiner <hannes@saeurebad.de>
Thu, 17 Jan 2008 23:21:08 +0000 (15:21 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 17 Jan 2008 23:38:58 +0000 (15:38 -0800)
When the cpufreq driver starts up at boot time, it calls into the default
governor which might not be initialised yet.  This hurts when the
governor's worker function relies on memory that is not yet set up by its
init function.

This migrates all governors from module_init() to fs_initcall() when being
the default, as was already done in cpufreq_performance when it was the
only possible choice.  The performance governor is always initialized early
because it might be used as fallback even when not being the default.

Fixes at least one actual oops where ondemand is the default governor and
cpufreq_governor_dbs() uses the uninitialised kondemand_wq work-queue
during boot-time.

Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
Cc: Dave Jones <davej@codemonkey.org.uk>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

index 1bba99747f5b3da806fea25aa991d3ac151673be..5d3a04ba6ad2c38aaf18d443b508511206bfac0c 100644 (file)
@@ -603,5 +603,9 @@ MODULE_DESCRIPTION ("'cpufreq_conservative' - A dynamic cpufreq governor for "
                "optimised for use in a battery environment");
index 369f44595150f7e568fff7802d8047ca645f0ffd..d2af20dda3827919d218d9dc592aeb8ca0fd8f03 100644 (file)
@@ -610,6 +610,9 @@ MODULE_DESCRIPTION("'cpufreq_ondemand' - A dynamic cpufreq governor for "
                    "Low Latency Frequency Transition capable processors");
index 51bedab6c808da57dd2b26e896021613d2540655..f8cdde4bf6cd86030a8f829d00fdac862d5847f2 100644 (file)
@@ -231,5 +231,9 @@ MODULE_AUTHOR ("Dominik Brodowski <linux@brodo.de>, Russell King <rmk@arm.linux.
 MODULE_DESCRIPTION ("CPUfreq policy governor 'userspace'");