Loading...
1# SPDX-License-Identifier: GPL-2.0-only
2menu "CPU Frequency scaling"
3
4config CPU_FREQ
5 bool "CPU Frequency scaling"
6 help
7 CPU Frequency scaling allows you to change the clock speed of
8 CPUs on the fly. This is a nice method to save power, because
9 the lower the CPU clock speed, the less power the CPU consumes.
10
11 Note that this driver doesn't automatically change the CPU
12 clock speed, you need to either enable a dynamic cpufreq governor
13 (see below) after boot, or use a userspace tool.
14
15 For details, take a look at
16 <file:Documentation/admin-guide/pm/cpufreq.rst>.
17
18 If in doubt, say N.
19
20if CPU_FREQ
21
22config CPU_FREQ_GOV_ATTR_SET
23 bool
24
25config CPU_FREQ_GOV_COMMON
26 select CPU_FREQ_GOV_ATTR_SET
27 select IRQ_WORK
28 bool
29
30config CPU_FREQ_STAT
31 bool "CPU frequency transition statistics"
32 help
33 Export CPU frequency statistics information through sysfs.
34
35 If in doubt, say N.
36
37choice
38 prompt "Default CPUFreq governor"
39 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1110_CPUFREQ
40 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
41 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if (X86_INTEL_PSTATE || X86_AMD_PSTATE) && SMP
42 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
43 help
44 This option sets which CPUFreq governor shall be loaded at
45 startup. If in doubt, use the default setting.
46
47config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
48 bool "performance"
49 select CPU_FREQ_GOV_PERFORMANCE
50 help
51 Use the CPUFreq governor 'performance' as default. This sets
52 the frequency statically to the highest frequency supported by
53 the CPU.
54
55config CPU_FREQ_DEFAULT_GOV_POWERSAVE
56 bool "powersave"
57 select CPU_FREQ_GOV_POWERSAVE
58 help
59 Use the CPUFreq governor 'powersave' as default. This sets
60 the frequency statically to the lowest frequency supported by
61 the CPU.
62
63config CPU_FREQ_DEFAULT_GOV_USERSPACE
64 bool "userspace"
65 select CPU_FREQ_GOV_USERSPACE
66 help
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.
71
72config CPU_FREQ_DEFAULT_GOV_ONDEMAND
73 bool "ondemand"
74 depends on !(X86_INTEL_PSTATE && SMP)
75 select CPU_FREQ_GOV_ONDEMAND
76 select CPU_FREQ_GOV_PERFORMANCE
77 help
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.
84
85config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
86 bool "conservative"
87 depends on !(X86_INTEL_PSTATE && SMP)
88 select CPU_FREQ_GOV_CONSERVATIVE
89 select CPU_FREQ_GOV_PERFORMANCE
90 help
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.
97
98config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
99 bool "schedutil"
100 depends on SMP
101 select CPU_FREQ_GOV_SCHEDUTIL
102 select CPU_FREQ_GOV_PERFORMANCE
103 help
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'.
107
108endchoice
109
110config CPU_FREQ_GOV_PERFORMANCE
111 tristate "'performance' governor"
112 help
113 This cpufreq governor sets the frequency statically to the
114 highest available CPU frequency.
115
116 To compile this driver as a module, choose M here: the
117 module will be called cpufreq_performance.
118
119 If in doubt, say Y.
120
121config CPU_FREQ_GOV_POWERSAVE
122 tristate "'powersave' governor"
123 help
124 This cpufreq governor sets the frequency statically to the
125 lowest available CPU frequency.
126
127 To compile this driver as a module, choose M here: the
128 module will be called cpufreq_powersave.
129
130 If in doubt, say Y.
131
132config CPU_FREQ_GOV_USERSPACE
133 tristate "'userspace' governor for userspace frequency scaling"
134 help
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/>.
139
140 To compile this driver as a module, choose M here: the
141 module will be called cpufreq_userspace.
142
143 If in doubt, say Y.
144
145config CPU_FREQ_GOV_ONDEMAND
146 tristate "'ondemand' cpufreq policy governor"
147 select CPU_FREQ_GOV_COMMON
148 help
149 'ondemand' - This driver adds a dynamic cpufreq policy governor.
150 The governor does a periodic polling and
151 changes frequency based on the CPU utilization.
152 The support for this governor depends on CPU capability to
153 do fast frequency switching (i.e, very low latency frequency
154 transitions).
155
156 To compile this driver as a module, choose M here: the
157 module will be called cpufreq_ondemand.
158
159 For details, take a look at
160 <file:Documentation/admin-guide/pm/cpufreq.rst>.
161
162 If in doubt, say N.
163
164config CPU_FREQ_GOV_CONSERVATIVE
165 tristate "'conservative' cpufreq governor"
166 depends on CPU_FREQ
167 select CPU_FREQ_GOV_COMMON
168 help
169 'conservative' - this driver is rather similar to the 'ondemand'
170 governor both in its source code and its purpose, the difference is
171 its optimisation for better suitability in a battery powered
172 environment. The frequency is gracefully increased and decreased
173 rather than jumping to 100% when speed is required.
174
175 If you have a desktop machine then you should really be considering
176 the 'ondemand' governor instead, however if you are using a laptop,
177 PDA or even an AMD64 based computer (due to the unacceptable
178 step-by-step latency issues between the minimum and maximum frequency
179 transitions in the CPU) you will probably want to use this governor.
180
181 To compile this driver as a module, choose M here: the
182 module will be called cpufreq_conservative.
183
184 For details, take a look at
185 <file:Documentation/admin-guide/pm/cpufreq.rst>.
186
187 If in doubt, say N.
188
189config CPU_FREQ_GOV_SCHEDUTIL
190 bool "'schedutil' cpufreq policy governor"
191 depends on CPU_FREQ && SMP
192 select CPU_FREQ_GOV_ATTR_SET
193 select IRQ_WORK
194 help
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
202 both cases.
203
204 If in doubt, say N.
205
206comment "CPU frequency scaling drivers"
207
208config CPUFREQ_DT
209 tristate "Generic DT based cpufreq driver"
210 depends on HAVE_CLK && OF
211 select CPUFREQ_DT_PLATDEV
212 select PM_OPP
213 help
214 This adds a generic DT based cpufreq driver for frequency management.
215 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
216 systems.
217
218 If in doubt, say N.
219
220config CPUFREQ_VIRT
221 tristate "Virtual cpufreq driver"
222 depends on GENERIC_ARCH_TOPOLOGY
223 help
224 This adds a virtualized cpufreq driver for guest kernels that
225 read/writes to a MMIO region for a virtualized cpufreq device to
226 communicate with the host. It sends performance requests to the host
227 which gets used as a hint to schedule vCPU threads and select CPU
228 frequency. If a VM does not support a virtualized FIE such as AMUs,
229 it updates the frequency scaling factor by polling host CPU frequency
230 to enable accurate Per-Entity Load Tracking for tasks running in the guest.
231
232 If in doubt, say N.
233
234config CPUFREQ_DT_PLATDEV
235 bool "Generic DT based cpufreq platdev driver"
236 depends on OF
237 help
238 This adds a generic DT based cpufreq platdev driver for frequency
239 management. This creates a 'cpufreq-dt' platform device, on the
240 supported platforms.
241
242 If in doubt, say N.
243
244if X86
245source "drivers/cpufreq/Kconfig.x86"
246endif
247
248source "drivers/cpufreq/Kconfig.arm"
249
250if PPC32 || PPC64
251source "drivers/cpufreq/Kconfig.powerpc"
252endif
253
254if MIPS
255config BMIPS_CPUFREQ
256 tristate "BMIPS CPUfreq Driver"
257 help
258 This option adds a CPUfreq driver for BMIPS processors with
259 support for configurable CPU frequency.
260
261 For now, BMIPS5 chips are supported (such as the Broadcom 7425).
262
263 If in doubt, say N.
264
265config LOONGSON2_CPUFREQ
266 tristate "Loongson2 CPUFreq Driver"
267 depends on LEMOTE_MACH2F
268 help
269 This option adds a CPUFreq driver for loongson processors which
270 support software configurable cpu frequency.
271
272 Loongson2F and its successors support this feature.
273
274 If in doubt, say N.
275endif
276
277if LOONGARCH
278config LOONGSON3_CPUFREQ
279 tristate "Loongson3 CPUFreq Driver"
280 help
281 This option adds a CPUFreq driver for Loongson processors which
282 support software configurable cpu frequency.
283
284 Loongson-3 family processors support this feature.
285
286 If in doubt, say N.
287endif
288
289if SPARC64
290config SPARC_US3_CPUFREQ
291 tristate "UltraSPARC-III CPU Frequency driver"
292 help
293 This adds the CPUFreq driver for UltraSPARC-III processors.
294
295 If in doubt, say N.
296
297config SPARC_US2E_CPUFREQ
298 tristate "UltraSPARC-IIe CPU Frequency driver"
299 help
300 This adds the CPUFreq driver for UltraSPARC-IIe processors.
301
302 If in doubt, say N.
303endif
304
305if SUPERH
306config SH_CPU_FREQ
307 tristate "SuperH CPU Frequency driver"
308 help
309 This adds the cpufreq driver for SuperH. Any CPU that supports
310 clock rate rounding through the clock framework can use this
311 driver. While it will make the kernel slightly larger, this is
312 harmless for CPUs that don't support rate rounding. The driver
313 will also generate a notice in the boot log before disabling
314 itself if the CPU in question is not capable of rate rounding.
315
316 If unsure, say N.
317endif
318
319config QORIQ_CPUFREQ
320 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
321 depends on OF && COMMON_CLK
322 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
323 select CLK_QORIQ
324 help
325 This adds the CPUFreq driver support for Freescale QorIQ SoCs
326 which are capable of changing the CPU's frequency dynamically.
327
328config ACPI_CPPC_CPUFREQ
329 tristate "CPUFreq driver based on the ACPI CPPC spec"
330 depends on ACPI_PROCESSOR
331 depends on ARM || ARM64 || RISCV
332 select ACPI_CPPC_LIB
333 help
334 This adds a CPUFreq driver which uses CPPC methods
335 as described in the ACPIv5.1 spec. CPPC stands for
336 Collaborative Processor Performance Controls. It
337 is based on an abstract continuous scale of CPU
338 performance values which allows the remote power
339 processor to flexibly optimize for power and
340 performance. CPPC relies on power management firmware
341 support for its operation.
342
343 If in doubt, say N.
344
345config ACPI_CPPC_CPUFREQ_FIE
346 bool "Frequency Invariance support for CPPC cpufreq driver"
347 depends on ACPI_CPPC_CPUFREQ && GENERIC_ARCH_TOPOLOGY
348 depends on ARM || ARM64 || RISCV
349 default y
350 help
351 This extends frequency invariance support in the CPPC cpufreq driver,
352 by using CPPC delivered and reference performance counters.
353
354 If in doubt, say N.
355
356endif
357
358endmenu
1menu "CPU Frequency scaling"
2
3config CPU_FREQ
4 bool "CPU Frequency scaling"
5 help
6 CPU Frequency scaling allows you to change the clock speed of
7 CPUs on the fly. This is a nice method to save power, because
8 the lower the CPU clock speed, the less power the CPU consumes.
9
10 Note that this driver doesn't automatically change the CPU
11 clock speed, you need to either enable a dynamic cpufreq governor
12 (see below) after boot, or use a userspace tool.
13
14 For details, take a look at <file:Documentation/cpu-freq>.
15
16 If in doubt, say N.
17
18if CPU_FREQ
19
20config CPU_FREQ_TABLE
21 tristate
22
23config CPU_FREQ_STAT
24 tristate "CPU frequency translation statistics"
25 select CPU_FREQ_TABLE
26 default y
27 help
28 This driver exports CPU frequency statistics information through sysfs
29 file system.
30
31 To compile this driver as a module, choose M here: the
32 module will be called cpufreq_stats.
33
34 If in doubt, say N.
35
36config CPU_FREQ_STAT_DETAILS
37 bool "CPU frequency translation statistics details"
38 depends on CPU_FREQ_STAT
39 help
40 This will show detail CPU frequency translation table in sysfs file
41 system.
42
43 If in doubt, say N.
44
45choice
46 prompt "Default CPUFreq governor"
47 default CPU_FREQ_DEFAULT_GOV_USERSPACE if CPU_FREQ_SA1100 || CPU_FREQ_SA1110
48 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
49 help
50 This option sets which CPUFreq governor shall be loaded at
51 startup. If in doubt, select 'performance'.
52
53config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
54 bool "performance"
55 select CPU_FREQ_GOV_PERFORMANCE
56 help
57 Use the CPUFreq governor 'performance' as default. This sets
58 the frequency statically to the highest frequency supported by
59 the CPU.
60
61config CPU_FREQ_DEFAULT_GOV_POWERSAVE
62 bool "powersave"
63 depends on EXPERT
64 select CPU_FREQ_GOV_POWERSAVE
65 help
66 Use the CPUFreq governor 'powersave' as default. This sets
67 the frequency statically to the lowest frequency supported by
68 the CPU.
69
70config CPU_FREQ_DEFAULT_GOV_USERSPACE
71 bool "userspace"
72 select CPU_FREQ_GOV_USERSPACE
73 help
74 Use the CPUFreq governor 'userspace' as default. This allows
75 you to set the CPU frequency manually or when a userspace
76 program shall be able to set the CPU dynamically without having
77 to enable the userspace governor manually.
78
79config CPU_FREQ_DEFAULT_GOV_ONDEMAND
80 bool "ondemand"
81 select CPU_FREQ_GOV_ONDEMAND
82 select CPU_FREQ_GOV_PERFORMANCE
83 help
84 Use the CPUFreq governor 'ondemand' as default. This allows
85 you to get a full dynamic frequency capable system by simply
86 loading your cpufreq low-level hardware driver.
87 Be aware that not all cpufreq drivers support the ondemand
88 governor. If unsure have a look at the help section of the
89 driver. Fallback governor will be the performance governor.
90
91config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
92 bool "conservative"
93 select CPU_FREQ_GOV_CONSERVATIVE
94 select CPU_FREQ_GOV_PERFORMANCE
95 help
96 Use the CPUFreq governor 'conservative' as default. This allows
97 you to get a full dynamic frequency capable system by simply
98 loading your cpufreq low-level hardware driver.
99 Be aware that not all cpufreq drivers support the conservative
100 governor. If unsure have a look at the help section of the
101 driver. Fallback governor will be the performance governor.
102endchoice
103
104config CPU_FREQ_GOV_PERFORMANCE
105 tristate "'performance' governor"
106 help
107 This cpufreq governor sets the frequency statically to the
108 highest available CPU frequency.
109
110 To compile this driver as a module, choose M here: the
111 module will be called cpufreq_performance.
112
113 If in doubt, say Y.
114
115config CPU_FREQ_GOV_POWERSAVE
116 tristate "'powersave' governor"
117 help
118 This cpufreq governor sets the frequency statically to the
119 lowest available CPU frequency.
120
121 To compile this driver as a module, choose M here: the
122 module will be called cpufreq_powersave.
123
124 If in doubt, say Y.
125
126config CPU_FREQ_GOV_USERSPACE
127 tristate "'userspace' governor for userspace frequency scaling"
128 help
129 Enable this cpufreq governor when you either want to set the
130 CPU frequency manually or when a userspace program shall
131 be able to set the CPU dynamically, like on LART
132 <http://www.lartmaker.nl/>.
133
134 To compile this driver as a module, choose M here: the
135 module will be called cpufreq_userspace.
136
137 For details, take a look at <file:Documentation/cpu-freq/>.
138
139 If in doubt, say Y.
140
141config CPU_FREQ_GOV_ONDEMAND
142 tristate "'ondemand' cpufreq policy governor"
143 select CPU_FREQ_TABLE
144 help
145 'ondemand' - This driver adds a dynamic cpufreq policy governor.
146 The governor does a periodic polling and
147 changes frequency based on the CPU utilization.
148 The support for this governor depends on CPU capability to
149 do fast frequency switching (i.e, very low latency frequency
150 transitions).
151
152 To compile this driver as a module, choose M here: the
153 module will be called cpufreq_ondemand.
154
155 For details, take a look at linux/Documentation/cpu-freq.
156
157 If in doubt, say N.
158
159config CPU_FREQ_GOV_CONSERVATIVE
160 tristate "'conservative' cpufreq governor"
161 depends on CPU_FREQ
162 help
163 'conservative' - this driver is rather similar to the 'ondemand'
164 governor both in its source code and its purpose, the difference is
165 its optimisation for better suitability in a battery powered
166 environment. The frequency is gracefully increased and decreased
167 rather than jumping to 100% when speed is required.
168
169 If you have a desktop machine then you should really be considering
170 the 'ondemand' governor instead, however if you are using a laptop,
171 PDA or even an AMD64 based computer (due to the unacceptable
172 step-by-step latency issues between the minimum and maximum frequency
173 transitions in the CPU) you will probably want to use this governor.
174
175 To compile this driver as a module, choose M here: the
176 module will be called cpufreq_conservative.
177
178 For details, take a look at linux/Documentation/cpu-freq.
179
180 If in doubt, say N.
181
182menu "x86 CPU frequency scaling drivers"
183depends on X86
184source "drivers/cpufreq/Kconfig.x86"
185endmenu
186
187menu "ARM CPU frequency scaling drivers"
188depends on ARM
189source "drivers/cpufreq/Kconfig.arm"
190endmenu
191
192menu "PowerPC CPU frequency scaling drivers"
193depends on PPC32 || PPC64
194source "drivers/cpufreq/Kconfig.powerpc"
195endmenu
196
197endif
198endmenu