# 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 CPU_IDLE_GOV_QCOM_LPM tristate "Qualcomm Technologies, Inc. CPU and Cluster governor" depends on ARCH_QCOM depends on ARM_PSCI_CPUIDLE help This governor implements effective cpu and cluster idle state selection with help of scheduler inputs, cpu idle state prediction and cluster idle state prediction algorithms. The predicted sleep time, latency requirement for the CPU and the idle state chosen based on the parameters are all logged in the trace. config CPU_IDLE_SIMPLE_GOV_QCOM_LPM tristate "Qualcomm Technologies, Inc. CPU and Cluster simple governor" depends on ARCH_QCOM depends on ARM_PSCI_CPUIDLE help This governor allows the cpu and cluster to deeper idle states more aggressively by reducing cpuidle parameters such as the entry, exit latencies and the residency. This provides the provision to user to update cpuidle parameters so that it can allow or restrict particular Idle state more aggressively. config DT_IDLE_STATES bool config DT_IDLE_GENPD depends on PM_GENERIC_DOMAINS_OF 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 menu "RISC-V CPU Idle Drivers" depends on RISCV source "drivers/cpuidle/Kconfig.riscv" 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