# SPDX-License-Identifier: GPL-2.0-only
menu "CPU Idle"

config CPU_IDLE
	bool "CPU idle PM support"
	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) && !CPU_IDLE_GOV_TEO
	help
	  CPU idle is a generic framework for supporting software-controlled
	  idle processor power management.  It includes modular cross-platform
	  governors that can be swapped during runtime.

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

if CPU_IDLE

config CPU_IDLE_MULTIPLE_DRIVERS
	bool

config CPU_IDLE_GOV_LADDER
	bool "Ladder governor (for periodic timer tick)"

config CPU_IDLE_GOV_MENU
	bool "Menu governor (for tickless system)"

config CPU_IDLE_GOV_TEO
	bool "Timer events oriented (TEO) governor (for tickless systems)"
	help
	  This governor implements a simplified idle state selection method
	  focused on timer events and does not do any interactivity boosting.

	  Some workloads benefit from using it and it generally should be safe
	  to use.  Say Y here if you are not happy with the alternatives.

config CPU_IDLE_GOV_HALTPOLL
	bool "Haltpoll governor (for virtualized systems)"
	depends on KVM_GUEST
	help
	  This governor implements haltpoll idle state selection, to be
	  used in conjunction with the haltpoll cpuidle driver, allowing
	  for polling for a certain amount of time before entering idle
	  state.

	  Some virtualized workloads benefit from using it.

config DT_IDLE_STATES
	bool

menu "ARM CPU Idle Drivers"
depends on ARM || ARM64
source "drivers/cpuidle/Kconfig.arm"
endmenu

menu "MIPS CPU Idle Drivers"
depends on MIPS
source "drivers/cpuidle/Kconfig.mips"
endmenu

menu "POWERPC CPU Idle Drivers"
depends on PPC
source "drivers/cpuidle/Kconfig.powerpc"
endmenu

config HALTPOLL_CPUIDLE
	tristate "Halt poll cpuidle driver"
	depends on X86 && KVM_GUEST
	default y
	help
	 This option enables halt poll cpuidle driver, which allows to poll
	 before halting in the guest (more efficient than polling in the
	 host via halt_poll_ns for some scenarios).

endif

config ARCH_NEEDS_CPU_IDLE_COUPLED
	def_bool n
endmenu
