162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenu "CPU Idle"
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciconfig CPU_IDLE
562306a36Sopenharmony_ci	bool "CPU idle PM support"
662306a36Sopenharmony_ci	default y if ACPI || PPC_PSERIES
762306a36Sopenharmony_ci	select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE)
862306a36Sopenharmony_ci	select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE) && !CPU_IDLE_GOV_TEO
962306a36Sopenharmony_ci	help
1062306a36Sopenharmony_ci	  CPU idle is a generic framework for supporting software-controlled
1162306a36Sopenharmony_ci	  idle processor power management.  It includes modular cross-platform
1262306a36Sopenharmony_ci	  governors that can be swapped during runtime.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	  If you're using an ACPI-enabled platform, you should say Y here.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciif CPU_IDLE
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciconfig CPU_IDLE_MULTIPLE_DRIVERS
1962306a36Sopenharmony_ci	bool
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig CPU_IDLE_GOV_LADDER
2262306a36Sopenharmony_ci	bool "Ladder governor (for periodic timer tick)"
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciconfig CPU_IDLE_GOV_MENU
2562306a36Sopenharmony_ci	bool "Menu governor (for tickless system)"
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciconfig CPU_IDLE_GOV_TEO
2862306a36Sopenharmony_ci	bool "Timer events oriented (TEO) governor (for tickless systems)"
2962306a36Sopenharmony_ci	help
3062306a36Sopenharmony_ci	  This governor implements a simplified idle state selection method
3162306a36Sopenharmony_ci	  focused on timer events and does not do any interactivity boosting.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  Some workloads benefit from using it and it generally should be safe
3462306a36Sopenharmony_ci	  to use.  Say Y here if you are not happy with the alternatives.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciconfig CPU_IDLE_GOV_HALTPOLL
3762306a36Sopenharmony_ci	bool "Haltpoll governor (for virtualized systems)"
3862306a36Sopenharmony_ci	depends on KVM_GUEST
3962306a36Sopenharmony_ci	help
4062306a36Sopenharmony_ci	  This governor implements haltpoll idle state selection, to be
4162306a36Sopenharmony_ci	  used in conjunction with the haltpoll cpuidle driver, allowing
4262306a36Sopenharmony_ci	  for polling for a certain amount of time before entering idle
4362306a36Sopenharmony_ci	  state.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	  Some virtualized workloads benefit from using it.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciconfig DT_IDLE_STATES
4862306a36Sopenharmony_ci	bool
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciconfig DT_IDLE_GENPD
5162306a36Sopenharmony_ci	depends on PM_GENERIC_DOMAINS_OF
5262306a36Sopenharmony_ci	bool
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cimenu "ARM CPU Idle Drivers"
5562306a36Sopenharmony_cidepends on ARM || ARM64
5662306a36Sopenharmony_cisource "drivers/cpuidle/Kconfig.arm"
5762306a36Sopenharmony_ciendmenu
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cimenu "MIPS CPU Idle Drivers"
6062306a36Sopenharmony_cidepends on MIPS
6162306a36Sopenharmony_cisource "drivers/cpuidle/Kconfig.mips"
6262306a36Sopenharmony_ciendmenu
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_cimenu "POWERPC CPU Idle Drivers"
6562306a36Sopenharmony_cidepends on PPC
6662306a36Sopenharmony_cisource "drivers/cpuidle/Kconfig.powerpc"
6762306a36Sopenharmony_ciendmenu
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cimenu "RISC-V CPU Idle Drivers"
7062306a36Sopenharmony_cidepends on RISCV
7162306a36Sopenharmony_cisource "drivers/cpuidle/Kconfig.riscv"
7262306a36Sopenharmony_ciendmenu
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig HALTPOLL_CPUIDLE
7562306a36Sopenharmony_ci	tristate "Halt poll cpuidle driver"
7662306a36Sopenharmony_ci	depends on X86 && KVM_GUEST
7762306a36Sopenharmony_ci	select CPU_IDLE_GOV_HALTPOLL
7862306a36Sopenharmony_ci	default y
7962306a36Sopenharmony_ci	help
8062306a36Sopenharmony_ci	 This option enables halt poll cpuidle driver, which allows to poll
8162306a36Sopenharmony_ci	 before halting in the guest (more efficient than polling in the
8262306a36Sopenharmony_ci	 host via halt_poll_ns for some scenarios).
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciendif
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciconfig ARCH_NEEDS_CPU_IDLE_COUPLED
8762306a36Sopenharmony_ci	def_bool n
8862306a36Sopenharmony_ciendmenu
89