^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 Frequency scaling"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) config CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) bool "CPU Frequency scaling"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) select SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) CPU Frequency scaling allows you to change the clock speed of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) CPUs on the fly. This is a nice method to save power, because
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) the lower the CPU clock speed, the less power the CPU consumes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Note that this driver doesn't automatically change the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) clock speed, you need to either enable a dynamic cpufreq governor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) (see below) after boot, or use a userspace tool.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) For details, take a look at <file:Documentation/cpu-freq>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) if CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) config CPU_FREQ_GOV_ATTR_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) config CPU_FREQ_GOV_COMMON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) select CPU_FREQ_GOV_ATTR_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) config CPU_FREQ_STAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) bool "CPU frequency transition statistics"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Export CPU frequency statistics information through sysfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) config CPU_FREQ_TIMES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) bool "CPU frequency time-in-state statistics"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Export CPU time-in-state information through procfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) choice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) prompt "Default CPUFreq governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) This option sets which CPUFreq governor shall be loaded at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) startup. If in doubt, use the default setting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) bool "performance"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) select CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) Use the CPUFreq governor 'performance' as default. This sets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) the frequency statically to the highest frequency supported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) the CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) config CPU_FREQ_DEFAULT_GOV_POWERSAVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) bool "powersave"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) select CPU_FREQ_GOV_POWERSAVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) Use the CPUFreq governor 'powersave' as default. This sets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) the frequency statically to the lowest frequency supported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) the CPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) config CPU_FREQ_DEFAULT_GOV_USERSPACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) bool "userspace"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) select CPU_FREQ_GOV_USERSPACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) Use the CPUFreq governor 'userspace' as default. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) you to set the CPU frequency manually or when a userspace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) program shall be able to set the CPU dynamically without having
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) to enable the userspace governor manually.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) config CPU_FREQ_DEFAULT_GOV_ONDEMAND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) bool "ondemand"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) depends on !(X86_INTEL_PSTATE && SMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) select CPU_FREQ_GOV_ONDEMAND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) select CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) Use the CPUFreq governor 'ondemand' as default. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) you to get a full dynamic frequency capable system by simply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) loading your cpufreq low-level hardware driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) Be aware that not all cpufreq drivers support the ondemand
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) governor. If unsure have a look at the help section of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) driver. Fallback governor will be the performance governor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) bool "conservative"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) depends on !(X86_INTEL_PSTATE && SMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) select CPU_FREQ_GOV_CONSERVATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) select CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Use the CPUFreq governor 'conservative' as default. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) you to get a full dynamic frequency capable system by simply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) loading your cpufreq low-level hardware driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) Be aware that not all cpufreq drivers support the conservative
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) governor. If unsure have a look at the help section of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) driver. Fallback governor will be the performance governor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) bool "schedutil"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) depends on SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) select CPU_FREQ_GOV_SCHEDUTIL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) select CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) Use the 'schedutil' CPUFreq governor by default. If unsure,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) have a look at the help section of that governor. The fallback
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) governor will be 'performance'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) config CPU_FREQ_DEFAULT_GOV_INTERACTIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) bool "interactive"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) depends on NO_GKI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) select CPU_FREQ_GOV_INTERACTIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) select CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) Use the CPUFreq governor 'interactive' as default. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) you to get a full dynamic cpu frequency capable system by simply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) loading your cpufreq low-level hardware driver, using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 'interactive' governor for latency-sensitive workloads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) endchoice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) config CPU_FREQ_GOV_PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) tristate "'performance' governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) This cpufreq governor sets the frequency statically to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) highest available CPU frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) module will be called cpufreq_performance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) If in doubt, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) config CPU_FREQ_GOV_POWERSAVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) tristate "'powersave' governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) This cpufreq governor sets the frequency statically to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) lowest available CPU frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) module will be called cpufreq_powersave.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) If in doubt, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) config CPU_FREQ_GOV_USERSPACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) tristate "'userspace' governor for userspace frequency scaling"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) Enable this cpufreq governor when you either want to set the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) CPU frequency manually or when a userspace program shall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) be able to set the CPU dynamically, like on LART
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) <http://www.lartmaker.nl/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) module will be called cpufreq_userspace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) For details, take a look at <file:Documentation/cpu-freq/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) If in doubt, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) config CPU_FREQ_GOV_ONDEMAND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) tristate "'ondemand' cpufreq policy governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) select CPU_FREQ_GOV_COMMON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 'ondemand' - This driver adds a dynamic cpufreq policy governor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) The governor does a periodic polling and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) changes frequency based on the CPU utilization.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) The support for this governor depends on CPU capability to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) do fast frequency switching (i.e, very low latency frequency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) transitions).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) module will be called cpufreq_ondemand.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) For details, take a look at linux/Documentation/cpu-freq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) config CPU_FREQ_GOV_CONSERVATIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) tristate "'conservative' cpufreq governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) depends on CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) select CPU_FREQ_GOV_COMMON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 'conservative' - this driver is rather similar to the 'ondemand'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) governor both in its source code and its purpose, the difference is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) its optimisation for better suitability in a battery powered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) environment. The frequency is gracefully increased and decreased
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) rather than jumping to 100% when speed is required.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) If you have a desktop machine then you should really be considering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) the 'ondemand' governor instead, however if you are using a laptop,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) PDA or even an AMD64 based computer (due to the unacceptable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) step-by-step latency issues between the minimum and maximum frequency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) transitions in the CPU) you will probably want to use this governor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) module will be called cpufreq_conservative.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) For details, take a look at linux/Documentation/cpu-freq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) config CPU_FREQ_GOV_SCHEDUTIL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) bool "'schedutil' cpufreq policy governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) depends on CPU_FREQ && SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) select CPU_FREQ_GOV_ATTR_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) This governor makes decisions based on the utilization data provided
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) by the scheduler. It sets the CPU frequency to be proportional to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) the utilization/capacity ratio coming from the scheduler. If the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) utilization is frequency-invariant, the new frequency is also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) proportional to the maximum available frequency. If that is not the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) case, it is proportional to the current frequency of the CPU. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) frequency tipping point is at utilization/capacity equal to 80% in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) both cases.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) config CPU_FREQ_GOV_INTERACTIVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) tristate "'interactive' cpufreq policy governor"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) depends on NO_GKI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) depends on CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) select CPU_FREQ_GOV_ATTR_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) select IRQ_WORK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 'interactive' - This driver adds a dynamic cpufreq policy governor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) designed for latency-sensitive workloads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) This governor attempts to reduce the latency of clock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) increases so that the system is more responsive to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) interactive workloads.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) To compile this driver as a module, choose M here: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) module will be called cpufreq_interactive.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) For details, take a look at linux/Documentation/cpu-freq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) comment "CPU frequency scaling drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) config CPUFREQ_DT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) tristate "Generic DT based cpufreq driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) depends on HAVE_CLK && OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) select CPUFREQ_DT_PLATDEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) select PM_OPP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) This adds a generic DT based cpufreq driver for frequency management.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) config CPUFREQ_DT_PLATDEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) This adds a generic DT based cpufreq platdev driver for frequency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) management. This creates a 'cpufreq-dt' platform device, on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) supported platforms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) config CPUFREQ_DUMMY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) tristate "Dummy CPU frequency driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) This option adds a generic dummy CPUfreq driver, which sets a fake
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 2-frequency table when initializing each policy and otherwise does
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) nothing.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) If in doubt, say N
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) if X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) source "drivers/cpufreq/Kconfig.x86"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) if ARM || ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) source "drivers/cpufreq/Kconfig.arm"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) if PPC32 || PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) source "drivers/cpufreq/Kconfig.powerpc"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) if IA64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) config IA64_ACPI_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) tristate "ACPI Processor P-States driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) depends on ACPI_PROCESSOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) This driver adds a CPUFreq driver which utilizes the ACPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) Processor Performance States.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) For details, take a look at <file:Documentation/cpu-freq/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) if MIPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) config BMIPS_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) tristate "BMIPS CPUfreq Driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) This option adds a CPUfreq driver for BMIPS processors with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) support for configurable CPU frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) For now, BMIPS5 chips are supported (such as the Broadcom 7425).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) config LOONGSON2_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) tristate "Loongson2 CPUFreq Driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) depends on LEMOTE_MACH2F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) This option adds a CPUFreq driver for loongson processors which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) support software configurable cpu frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) Loongson2F and it's successors support this feature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) For details, take a look at <file:Documentation/cpu-freq/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) config LOONGSON1_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) tristate "Loongson1 CPUFreq Driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) depends on LOONGSON1_LS1B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) This option adds a CPUFreq driver for loongson1 processors which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) support software configurable cpu frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) For details, take a look at <file:Documentation/cpu-freq/>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) if SPARC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) config SPARC_US3_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) tristate "UltraSPARC-III CPU Frequency driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) This adds the CPUFreq driver for UltraSPARC-III processors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) For details, take a look at <file:Documentation/cpu-freq>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) config SPARC_US2E_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) tristate "UltraSPARC-IIe CPU Frequency driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) This adds the CPUFreq driver for UltraSPARC-IIe processors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) For details, take a look at <file:Documentation/cpu-freq>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) If in doubt, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) if SUPERH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) config SH_CPU_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) tristate "SuperH CPU Frequency driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) This adds the cpufreq driver for SuperH. Any CPU that supports
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) clock rate rounding through the clock framework can use this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) driver. While it will make the kernel slightly larger, this is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) harmless for CPUs that don't support rate rounding. The driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) will also generate a notice in the boot log before disabling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) itself if the CPU in question is not capable of rate rounding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) For details, take a look at <file:Documentation/cpu-freq>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) config QORIQ_CPUFREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) depends on OF && COMMON_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) select CLK_QORIQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) This adds the CPUFreq driver support for Freescale QorIQ SoCs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) which are capable of changing the CPU's frequency dynamically.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) endmenu