^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) menu "CPU Idle"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) config CPU_IDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) bool "CPU idle PM support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) default y if ACPI || PPC_PSERIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE) && !CPU_IDLE_GOV_TEO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) CPU idle is a generic framework for supporting software-controlled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) idle processor power management. It includes modular cross-platform
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) governors that can be swapped during runtime.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) If you're using an ACPI-enabled platform, you should say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) if CPU_IDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) config CPU_IDLE_MULTIPLE_DRIVERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) config CPU_IDLE_GOV_LADDER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) bool "Ladder governor (for periodic timer tick)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) config CPU_IDLE_GOV_MENU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) bool "Menu governor (for tickless system)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) config CPU_IDLE_GOV_TEO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) bool "Timer events oriented (TEO) governor (for tickless systems)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) This governor implements a simplified idle state selection method
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) focused on timer events and does not do any interactivity boosting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Some workloads benefit from using it and it generally should be safe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) to use. Say Y here if you are not happy with the alternatives.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) config CPU_IDLE_GOV_HALTPOLL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) bool "Haltpoll governor (for virtualized systems)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) depends on KVM_GUEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) This governor implements haltpoll idle state selection, to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) used in conjunction with the haltpoll cpuidle driver, allowing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) for polling for a certain amount of time before entering idle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) Some virtualized workloads benefit from using it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) config DT_IDLE_STATES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) menu "ARM CPU Idle Drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) depends on ARM || ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) source "drivers/cpuidle/Kconfig.arm"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) menu "MIPS CPU Idle Drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) depends on MIPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) source "drivers/cpuidle/Kconfig.mips"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) menu "POWERPC CPU Idle Drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) depends on PPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) source "drivers/cpuidle/Kconfig.powerpc"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) config HALTPOLL_CPUIDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) tristate "Halt poll cpuidle driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) depends on X86 && KVM_GUEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) This option enables halt poll cpuidle driver, which allows to poll
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) before halting in the guest (more efficient than polling in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) host via halt_poll_ns for some scenarios).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) config ARCH_NEEDS_CPU_IDLE_COUPLED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) def_bool n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) endmenu