Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6f346f2 authored by Daniel Lezcano's avatar Daniel Lezcano Committed by Rafael J. Wysocki
Browse files

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: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent d683b96b
Loading
Loading
Loading
Loading
+7 −9
Original line number Original line Diff line number Diff line


config CPU_IDLE
menuconfig CPU_IDLE
	bool "CPU idle PM support"
	bool "CPU idle PM support"
	default y if ACPI || PPC_PSERIES
	default y if ACPI || PPC_PSERIES
	select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE)
	select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE)
	help
	help
	  CPU idle is a generic framework for supporting software-controlled
	  CPU idle is a generic framework for supporting software-controlled
	  idle processor power management.  It includes modular cross-platform
	  idle processor power management.  It includes modular cross-platform
@@ -9,9 +11,10 @@ config CPU_IDLE


	  If you're using an ACPI-enabled platform, you should say Y here.
	  If you're using an ACPI-enabled platform, you should say Y here.


if CPU_IDLE

config CPU_IDLE_MULTIPLE_DRIVERS
config CPU_IDLE_MULTIPLE_DRIVERS
        bool "Support multiple cpuidle drivers"
        bool "Support multiple cpuidle drivers"
        depends on CPU_IDLE
        default n
        default n
        help
        help
         Allows the cpuidle framework to use different drivers for each CPU.
         Allows the cpuidle framework to use different drivers for each CPU.
@@ -19,24 +22,19 @@ config CPU_IDLE_MULTIPLE_DRIVERS
         states. If unsure say N.
         states. If unsure say N.


config CPU_IDLE_GOV_LADDER
config CPU_IDLE_GOV_LADDER
	bool
	bool "Ladder governor (for periodic timer tick)"
	depends on CPU_IDLE
	default y
	default y


config CPU_IDLE_GOV_MENU
config CPU_IDLE_GOV_MENU
	bool
	bool "Menu governor (for tickless system)"
	depends on CPU_IDLE && NO_HZ
	default y
	default y


config ARCH_NEEDS_CPU_IDLE_COUPLED
config ARCH_NEEDS_CPU_IDLE_COUPLED
	def_bool n
	def_bool n


if CPU_IDLE

config CPU_IDLE_CALXEDA
config CPU_IDLE_CALXEDA
	bool "CPU Idle Driver for Calxeda processors"
	bool "CPU Idle Driver for Calxeda processors"
	depends on ARCH_HIGHBANK
	depends on ARCH_HIGHBANK
	help
	help
	  Select this to enable cpuidle on Calxeda processors.
	  Select this to enable cpuidle on Calxeda processors.

endif
endif