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 <file:Documentation/cpu-freq>.
22 config CPU_FREQ_GOV_ATTR_SET
25 config CPU_FREQ_GOV_COMMON
26 select CPU_FREQ_GOV_ATTR_SET
31 bool "CPU frequency transition statistics"
33 Export CPU frequency statistics information through sysfs.
38 prompt "Default CPUFreq governor"
39 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
40 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
41 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
42 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
44 This option sets which CPUFreq governor shall be loaded at
45 startup. If in doubt, use the default setting.
47 config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
49 select CPU_FREQ_GOV_PERFORMANCE
51 Use the CPUFreq governor 'performance' as default. This sets
52 the frequency statically to the highest frequency supported by
55 config CPU_FREQ_DEFAULT_GOV_POWERSAVE
57 select CPU_FREQ_GOV_POWERSAVE
59 Use the CPUFreq governor 'powersave' as default. This sets
60 the frequency statically to the lowest frequency supported by
63 config CPU_FREQ_DEFAULT_GOV_USERSPACE
65 select CPU_FREQ_GOV_USERSPACE
67 Use the CPUFreq governor 'userspace' as default. This allows
68 you to set the CPU frequency manually or when a userspace
69 program shall be able to set the CPU dynamically without having
70 to enable the userspace governor manually.
72 config CPU_FREQ_DEFAULT_GOV_ONDEMAND
74 depends on !(X86_INTEL_PSTATE && SMP)
75 select CPU_FREQ_GOV_ONDEMAND
76 select CPU_FREQ_GOV_PERFORMANCE
78 Use the CPUFreq governor 'ondemand' as default. This allows
79 you to get a full dynamic frequency capable system by simply
80 loading your cpufreq low-level hardware driver.
81 Be aware that not all cpufreq drivers support the ondemand
82 governor. If unsure have a look at the help section of the
83 driver. Fallback governor will be the performance governor.
85 config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
87 depends on !(X86_INTEL_PSTATE && SMP)
88 select CPU_FREQ_GOV_CONSERVATIVE
89 select CPU_FREQ_GOV_PERFORMANCE
91 Use the CPUFreq governor 'conservative' as default. This allows
92 you to get a full dynamic frequency capable system by simply
93 loading your cpufreq low-level hardware driver.
94 Be aware that not all cpufreq drivers support the conservative
95 governor. If unsure have a look at the help section of the
96 driver. Fallback governor will be the performance governor.
98 config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
101 select CPU_FREQ_GOV_SCHEDUTIL
102 select CPU_FREQ_GOV_PERFORMANCE
104 Use the 'schedutil' CPUFreq governor by default. If unsure,
105 have a look at the help section of that governor. The fallback
106 governor will be 'performance'.
110 config CPU_FREQ_GOV_PERFORMANCE
111 tristate "'performance' governor"
113 This cpufreq governor sets the frequency statically to the
114 highest available CPU frequency.
116 To compile this driver as a module, choose M here: the
117 module will be called cpufreq_performance.
121 config CPU_FREQ_GOV_POWERSAVE
122 tristate "'powersave' governor"
124 This cpufreq governor sets the frequency statically to the
125 lowest available CPU frequency.
127 To compile this driver as a module, choose M here: the
128 module will be called cpufreq_powersave.
132 config CPU_FREQ_GOV_USERSPACE
133 tristate "'userspace' governor for userspace frequency scaling"
135 Enable this cpufreq governor when you either want to set the
136 CPU frequency manually or when a userspace program shall
137 be able to set the CPU dynamically, like on LART
138 <http://www.lartmaker.nl/>.
140 To compile this driver as a module, choose M here: the
141 module will be called cpufreq_userspace.
143 For details, take a look at <file:Documentation/cpu-freq/>.
147 config CPU_FREQ_GOV_ONDEMAND
148 tristate "'ondemand' cpufreq policy governor"
149 select CPU_FREQ_GOV_COMMON
151 'ondemand' - This driver adds a dynamic cpufreq policy governor.
152 The governor does a periodic polling and
153 changes frequency based on the CPU utilization.
154 The support for this governor depends on CPU capability to
155 do fast frequency switching (i.e, very low latency frequency
158 To compile this driver as a module, choose M here: the
159 module will be called cpufreq_ondemand.
161 For details, take a look at linux/Documentation/cpu-freq.
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 linux/Documentation/cpu-freq.
189 config CPU_FREQ_GOV_SCHEDUTIL
190 bool "'schedutil' cpufreq policy governor"
191 depends on CPU_FREQ && SMP
192 select CPU_FREQ_GOV_ATTR_SET
195 This governor makes decisions based on the utilization data provided
196 by the scheduler. It sets the CPU frequency to be proportional to
197 the utilization/capacity ratio coming from the scheduler. If the
198 utilization is frequency-invariant, the new frequency is also
199 proportional to the maximum available frequency. If that is not the
200 case, it is proportional to the current frequency of the CPU. The
201 frequency tipping point is at utilization/capacity equal to 80% in
206 comment "CPU frequency scaling drivers"
209 tristate "Generic DT based cpufreq driver"
210 depends on HAVE_CLK && OF
211 select CPUFREQ_DT_PLATDEV
214 This adds a generic DT based cpufreq driver for frequency management.
215 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
220 config CPUFREQ_DT_PLATDEV
223 This adds a generic DT based cpufreq platdev driver for frequency
224 management. This creates a 'cpufreq-dt' platform device, on the
230 source "drivers/cpufreq/Kconfig.x86"
234 source "drivers/cpufreq/Kconfig.arm"
238 source "drivers/cpufreq/Kconfig.powerpc"
242 config IA64_ACPI_CPUFREQ
243 tristate "ACPI Processor P-States driver"
244 depends on ACPI_PROCESSOR
246 This driver adds a CPUFreq driver which utilizes the ACPI
247 Processor Performance States.
249 For details, take a look at <file:Documentation/cpu-freq/>.
256 tristate "BMIPS CPUfreq Driver"
258 This option adds a CPUfreq driver for BMIPS processors with
259 support for configurable CPU frequency.
261 For now, BMIPS5 chips are supported (such as the Broadcom 7425).
265 config LOONGSON2_CPUFREQ
266 tristate "Loongson2 CPUFreq Driver"
267 depends on LEMOTE_MACH2F
269 This option adds a CPUFreq driver for loongson processors which
270 support software configurable cpu frequency.
272 Loongson2F and it's successors support this feature.
274 For details, take a look at <file:Documentation/cpu-freq/>.
278 config LOONGSON1_CPUFREQ
279 tristate "Loongson1 CPUFreq Driver"
280 depends on LOONGSON1_LS1B
282 This option adds a CPUFreq driver for loongson1 processors which
283 support software configurable cpu frequency.
285 For details, take a look at <file:Documentation/cpu-freq/>.
291 config SPARC_US3_CPUFREQ
292 tristate "UltraSPARC-III CPU Frequency driver"
294 This adds the CPUFreq driver for UltraSPARC-III processors.
296 For details, take a look at <file:Documentation/cpu-freq>.
300 config SPARC_US2E_CPUFREQ
301 tristate "UltraSPARC-IIe CPU Frequency driver"
303 This adds the CPUFreq driver for UltraSPARC-IIe processors.
305 For details, take a look at <file:Documentation/cpu-freq>.
312 tristate "SuperH CPU Frequency driver"
314 This adds the cpufreq driver for SuperH. Any CPU that supports
315 clock rate rounding through the clock framework can use this
316 driver. While it will make the kernel slightly larger, this is
317 harmless for CPUs that don't support rate rounding. The driver
318 will also generate a notice in the boot log before disabling
319 itself if the CPU in question is not capable of rate rounding.
321 For details, take a look at <file:Documentation/cpu-freq>.
327 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
328 depends on OF && COMMON_CLK
329 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
332 This adds the CPUFreq driver support for Freescale QorIQ SoCs
333 which are capable of changing the CPU's frequency dynamically.