1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "CPU Frequency scaling"
5 bool "CPU Frequency scaling"
8 CPU Frequency scaling allows you to change the clock speed of
9 CPUs on the fly. This is a nice method to save power, because
10 the lower the CPU clock speed, the less power the CPU consumes.
12 Note that this driver doesn't automatically change the CPU
13 clock speed, you need to either enable a dynamic cpufreq governor
14 (see below) after boot, or use a userspace tool.
16 For details, take a look at
17 <file:Documentation/admin-guide/pm/cpufreq.rst>.
23 config CPU_FREQ_GOV_ATTR_SET
26 config CPU_FREQ_GOV_COMMON
27 select CPU_FREQ_GOV_ATTR_SET
32 bool "CPU frequency transition statistics"
34 Export CPU frequency statistics information through sysfs.
39 prompt "Default CPUFreq governor"
40 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
41 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
42 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
43 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
45 This option sets which CPUFreq governor shall be loaded at
46 startup. If in doubt, use the default setting.
48 config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
50 select CPU_FREQ_GOV_PERFORMANCE
52 Use the CPUFreq governor 'performance' as default. This sets
53 the frequency statically to the highest frequency supported by
56 config CPU_FREQ_DEFAULT_GOV_POWERSAVE
58 select CPU_FREQ_GOV_POWERSAVE
60 Use the CPUFreq governor 'powersave' as default. This sets
61 the frequency statically to the lowest frequency supported by
64 config CPU_FREQ_DEFAULT_GOV_USERSPACE
66 select CPU_FREQ_GOV_USERSPACE
68 Use the CPUFreq governor 'userspace' as default. This allows
69 you to set the CPU frequency manually or when a userspace
70 program shall be able to set the CPU dynamically without having
71 to enable the userspace governor manually.
73 config CPU_FREQ_DEFAULT_GOV_ONDEMAND
75 depends on !(X86_INTEL_PSTATE && SMP)
76 select CPU_FREQ_GOV_ONDEMAND
77 select CPU_FREQ_GOV_PERFORMANCE
79 Use the CPUFreq governor 'ondemand' as default. This allows
80 you to get a full dynamic frequency capable system by simply
81 loading your cpufreq low-level hardware driver.
82 Be aware that not all cpufreq drivers support the ondemand
83 governor. If unsure have a look at the help section of the
84 driver. Fallback governor will be the performance governor.
86 config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
88 depends on !(X86_INTEL_PSTATE && SMP)
89 select CPU_FREQ_GOV_CONSERVATIVE
90 select CPU_FREQ_GOV_PERFORMANCE
92 Use the CPUFreq governor 'conservative' as default. This allows
93 you to get a full dynamic frequency capable system by simply
94 loading your cpufreq low-level hardware driver.
95 Be aware that not all cpufreq drivers support the conservative
96 governor. If unsure have a look at the help section of the
97 driver. Fallback governor will be the performance governor.
99 config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
102 select CPU_FREQ_GOV_SCHEDUTIL
103 select CPU_FREQ_GOV_PERFORMANCE
105 Use the 'schedutil' CPUFreq governor by default. If unsure,
106 have a look at the help section of that governor. The fallback
107 governor will be 'performance'.
111 config CPU_FREQ_GOV_PERFORMANCE
112 tristate "'performance' governor"
114 This cpufreq governor sets the frequency statically to the
115 highest available CPU frequency.
117 To compile this driver as a module, choose M here: the
118 module will be called cpufreq_performance.
122 config CPU_FREQ_GOV_POWERSAVE
123 tristate "'powersave' governor"
125 This cpufreq governor sets the frequency statically to the
126 lowest available CPU frequency.
128 To compile this driver as a module, choose M here: the
129 module will be called cpufreq_powersave.
133 config CPU_FREQ_GOV_USERSPACE
134 tristate "'userspace' governor for userspace frequency scaling"
136 Enable this cpufreq governor when you either want to set the
137 CPU frequency manually or when a userspace program shall
138 be able to set the CPU dynamically, like on LART
139 <http://www.lartmaker.nl/>.
141 To compile this driver as a module, choose M here: the
142 module will be called cpufreq_userspace.
146 config CPU_FREQ_GOV_ONDEMAND
147 tristate "'ondemand' cpufreq policy governor"
148 select CPU_FREQ_GOV_COMMON
150 'ondemand' - This driver adds a dynamic cpufreq policy governor.
151 The governor does a periodic polling and
152 changes frequency based on the CPU utilization.
153 The support for this governor depends on CPU capability to
154 do fast frequency switching (i.e, very low latency frequency
157 To compile this driver as a module, choose M here: the
158 module will be called cpufreq_ondemand.
160 For details, take a look at
161 <file:Documentation/admin-guide/pm/cpufreq.rst>.
165 config CPU_FREQ_GOV_CONSERVATIVE
166 tristate "'conservative' cpufreq governor"
168 select CPU_FREQ_GOV_COMMON
170 'conservative' - this driver is rather similar to the 'ondemand'
171 governor both in its source code and its purpose, the difference is
172 its optimisation for better suitability in a battery powered
173 environment. The frequency is gracefully increased and decreased
174 rather than jumping to 100% when speed is required.
176 If you have a desktop machine then you should really be considering
177 the 'ondemand' governor instead, however if you are using a laptop,
178 PDA or even an AMD64 based computer (due to the unacceptable
179 step-by-step latency issues between the minimum and maximum frequency
180 transitions in the CPU) you will probably want to use this governor.
182 To compile this driver as a module, choose M here: the
183 module will be called cpufreq_conservative.
185 For details, take a look at
186 <file:Documentation/admin-guide/pm/cpufreq.rst>.
190 config CPU_FREQ_GOV_SCHEDUTIL
191 bool "'schedutil' cpufreq policy governor"
192 depends on CPU_FREQ && SMP
193 select CPU_FREQ_GOV_ATTR_SET
196 This governor makes decisions based on the utilization data provided
197 by the scheduler. It sets the CPU frequency to be proportional to
198 the utilization/capacity ratio coming from the scheduler. If the
199 utilization is frequency-invariant, the new frequency is also
200 proportional to the maximum available frequency. If that is not the
201 case, it is proportional to the current frequency of the CPU. The
202 frequency tipping point is at utilization/capacity equal to 80% in
207 comment "CPU frequency scaling drivers"
210 tristate "Generic DT based cpufreq driver"
211 depends on HAVE_CLK && OF
212 select CPUFREQ_DT_PLATDEV
215 This adds a generic DT based cpufreq driver for frequency management.
216 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
221 config CPUFREQ_DT_PLATDEV
224 This adds a generic DT based cpufreq platdev driver for frequency
225 management. This creates a 'cpufreq-dt' platform device, on the
231 source "drivers/cpufreq/Kconfig.x86"
235 source "drivers/cpufreq/Kconfig.arm"
239 source "drivers/cpufreq/Kconfig.powerpc"
243 config IA64_ACPI_CPUFREQ
244 tristate "ACPI Processor P-States driver"
245 depends on ACPI_PROCESSOR
247 This driver adds a CPUFreq driver which utilizes the ACPI
248 Processor Performance States.
255 tristate "BMIPS CPUfreq Driver"
257 This option adds a CPUfreq driver for BMIPS processors with
258 support for configurable CPU frequency.
260 For now, BMIPS5 chips are supported (such as the Broadcom 7425).
264 config LOONGSON2_CPUFREQ
265 tristate "Loongson2 CPUFreq Driver"
266 depends on LEMOTE_MACH2F
268 This option adds a CPUFreq driver for loongson processors which
269 support software configurable cpu frequency.
271 Loongson2F and it's successors support this feature.
275 config LOONGSON1_CPUFREQ
276 tristate "Loongson1 CPUFreq Driver"
277 depends on LOONGSON1_LS1B
279 This option adds a CPUFreq driver for loongson1 processors which
280 support software configurable cpu frequency.
286 config SPARC_US3_CPUFREQ
287 tristate "UltraSPARC-III CPU Frequency driver"
289 This adds the CPUFreq driver for UltraSPARC-III processors.
293 config SPARC_US2E_CPUFREQ
294 tristate "UltraSPARC-IIe CPU Frequency driver"
296 This adds the CPUFreq driver for UltraSPARC-IIe processors.
303 tristate "SuperH CPU Frequency driver"
305 This adds the cpufreq driver for SuperH. Any CPU that supports
306 clock rate rounding through the clock framework can use this
307 driver. While it will make the kernel slightly larger, this is
308 harmless for CPUs that don't support rate rounding. The driver
309 will also generate a notice in the boot log before disabling
310 itself if the CPU in question is not capable of rate rounding.
316 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
317 depends on OF && COMMON_CLK
318 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
321 This adds the CPUFreq driver support for Freescale QorIQ SoCs
322 which are capable of changing the CPU's frequency dynamically.