aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpuidle
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2013-05-28 11:51:54 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-06-03 15:40:48 -0400
commitd6f346f2d2bf511c2c59176121a6e42ce60173a0 (patch)
treea24c107dfbb4ccc5434dd3598fea81273ff2e9b9 /drivers/cpuidle
parentd683b96b072dc4680fc74964eca77e6a23d1fa6e (diff)
cpuidle: improve governor Kconfig options
Each governor is suitable for different kernel configurations: the menu governor suits better for a tickless system, while the ladder governor fits better for a periodic timer tick system. The Kconfig does not allow to [un]select a governor, thus both are compiled in the kernel but the init order makes the menu governor to be the last one to be registered, so becoming the default. The only way to switch back to the ladder governor is to enable the sysfs governor switch in the kernel command line. Because it seems nobody complained about this, the menu governor is used by default most of the time on the system, having both governors is not really necessary on a tickless system but there isn't a config option to disable one or another governor. Create a submenu for cpuidle and add a label for each governor, so we can see the option in the menu config and enable/disable it. The governors will be enabled depending on the CONFIG_NO_HZ option: - If CONFIG_NO_HZ is set, then the menu governor is selected and the ladder governor is optional, defaulting to 'yes' - If CONFIG_NO_HZ is not set, then the ladder governor is selected and the menu governor is optional, defaulting to 'yes' Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r--drivers/cpuidle/Kconfig16
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/cpuidle/Kconfig b/drivers/cpuidle/Kconfig
index c4cc27e5c8a5..e997f15d4d0d 100644
--- a/drivers/cpuidle/Kconfig
+++ b/drivers/cpuidle/Kconfig
@@ -1,7 +1,9 @@
1 1
2config CPU_IDLE 2menuconfig CPU_IDLE
3 bool "CPU idle PM support" 3 bool "CPU idle PM support"
4 default y if ACPI || PPC_PSERIES 4 default y if ACPI || PPC_PSERIES
5 select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE)
6 select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE)
5 help 7 help
6 CPU idle is a generic framework for supporting software-controlled 8 CPU idle is a generic framework for supporting software-controlled
7 idle processor power management. It includes modular cross-platform 9 idle processor power management. It includes modular cross-platform
@@ -9,9 +11,10 @@ config CPU_IDLE
9 11
10 If you're using an ACPI-enabled platform, you should say Y here. 12 If you're using an ACPI-enabled platform, you should say Y here.
11 13
14if CPU_IDLE
15
12config CPU_IDLE_MULTIPLE_DRIVERS 16config CPU_IDLE_MULTIPLE_DRIVERS
13 bool "Support multiple cpuidle drivers" 17 bool "Support multiple cpuidle drivers"
14 depends on CPU_IDLE
15 default n 18 default n
16 help 19 help
17 Allows the cpuidle framework to use different drivers for each CPU. 20 Allows the cpuidle framework to use different drivers for each CPU.
@@ -19,24 +22,19 @@ config CPU_IDLE_MULTIPLE_DRIVERS
19 states. If unsure say N. 22 states. If unsure say N.
20 23
21config CPU_IDLE_GOV_LADDER 24config CPU_IDLE_GOV_LADDER
22 bool 25 bool "Ladder governor (for periodic timer tick)"
23 depends on CPU_IDLE
24 default y 26 default y
25 27
26config CPU_IDLE_GOV_MENU 28config CPU_IDLE_GOV_MENU
27 bool 29 bool "Menu governor (for tickless system)"
28 depends on CPU_IDLE && NO_HZ
29 default y 30 default y
30 31
31config ARCH_NEEDS_CPU_IDLE_COUPLED 32config ARCH_NEEDS_CPU_IDLE_COUPLED
32 def_bool n 33 def_bool n
33 34
34if CPU_IDLE
35
36config CPU_IDLE_CALXEDA 35config CPU_IDLE_CALXEDA
37 bool "CPU Idle Driver for Calxeda processors" 36 bool "CPU Idle Driver for Calxeda processors"
38 depends on ARCH_HIGHBANK 37 depends on ARCH_HIGHBANK
39 help 38 help
40 Select this to enable cpuidle on Calxeda processors. 39 Select this to enable cpuidle on Calxeda processors.
41
42endif 40endif