blob: 109e97bbab7717e8b9dd721b47a992ba5773ea31 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001 CPU frequency and voltage scaling code in the Linux(TM) kernel
2
3
4 L i n u x C P U F r e q
5
6 U S E R G U I D E
7
8
9 Dominik Brodowski <linux@brodo.de>
10
11
12
13 Clock scaling allows you to change the clock speed of the CPUs on the
14 fly. This is a nice method to save battery power, because the lower
15 the clock speed, the less power the CPU consumes.
16
17
18Contents:
19---------
201. Supported Architectures and Processors
211.1 ARM
221.2 x86
231.3 sparc64
241.4 ppc
251.5 SuperH
Robin Getz121fe862008-10-17 01:36:43 +0800261.6 Blackfin
Linus Torvalds1da177e2005-04-16 15:20:36 -070027
282. "Policy" / "Governor"?
292.1 Policy
302.2 Governor
31
323. How to change the CPU cpufreq policy and/or speed
333.1 Preferred interface: sysfs
Linus Torvalds1da177e2005-04-16 15:20:36 -070034
35
36
371. Supported Architectures and Processors
38=========================================
39
401.1 ARM
41-------
42
43The following ARM processors are supported by cpufreq:
44
45ARM Integrator
46ARM-SA1100
47ARM-SA1110
Russell King9e2697f2007-12-14 13:30:14 +000048Intel PXA
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
50
511.2 x86
52-------
53
54The following processors for the x86 architecture are supported by cpufreq:
55
56AMD Elan - SC400, SC410
57AMD mobile K6-2+
58AMD mobile K6-3+
59AMD mobile Duron
60AMD mobile Athlon
61AMD Opteron
62AMD Athlon 64
63Cyrix Media GXm
64Intel mobile PIII and Intel mobile PIII-M on certain chipsets
65Intel Pentium 4, Intel Xeon
66Intel Pentium M (Centrino)
67National Semiconductors Geode GX
68Transmeta Crusoe
69Transmeta Efficeon
70VIA Cyrix 3 / C3
71various processors on some ACPI 2.0-compatible systems [*]
72
73[*] Only if "ACPI Processor Performance States" are available
74to the ACPI<->BIOS interface.
75
76
771.3 sparc64
78-----------
79
80The following processors for the sparc64 architecture are supported by
81cpufreq:
82
83UltraSPARC-III
84
85
861.4 ppc
87-------
88
89Several "PowerBook" and "iBook2" notebooks are supported.
90
91
921.5 SuperH
93----------
94
Paul Mundt8a655052008-12-17 15:06:54 +090095All SuperH processors supporting rate rounding through the clock
96framework are supported by cpufreq.
Linus Torvalds1da177e2005-04-16 15:20:36 -070097
Robin Getz121fe862008-10-17 01:36:43 +0800981.6 Blackfin
99------------
100
101The following Blackfin processors are supported by cpufreq:
102
103BF522, BF523, BF524, BF525, BF526, BF527, Rev 0.1 or higher
104BF531, BF532, BF533, Rev 0.3 or higher
105BF534, BF536, BF537, Rev 0.2 or higher
106BF561, Rev 0.3 or higher
107BF542, BF544, BF547, BF548, BF549, Rev 0.1 or higher
108
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109
1102. "Policy" / "Governor" ?
111==========================
112
113Some CPU frequency scaling-capable processor switch between various
114frequencies and operating voltages "on the fly" without any kernel or
115user involvement. This guarantees very fast switching to a frequency
116which is high enough to serve the user's needs, but low enough to save
117power.
118
119
1202.1 Policy
121----------
122
123On these systems, all you can do is select the lower and upper
124frequency limit as well as whether you want more aggressive
125power-saving or more instantly available processing power.
126
127
1282.2 Governor
129------------
130
131On all other cpufreq implementations, these boundaries still need to
132be set. Then, a "governor" must be selected. Such a "governor" decides
133what speed the processor shall run within the boundaries. One such
134"governor" is the "userspace" governor. This one allows the user - or
135a yet-to-implement userspace program - to decide what specific speed
136the processor shall run at.
137
138
1393. How to change the CPU cpufreq policy and/or speed
140====================================================
141
1423.1 Preferred Interface: sysfs
143------------------------------
144
145The preferred interface is located in the sysfs filesystem. If you
146mounted it at /sys, the cpufreq interface is located in a subdirectory
147"cpufreq" within the cpu-device directory
148(e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
149
150cpuinfo_min_freq : this file shows the minimum operating
151 frequency the processor can run at(in kHz)
152cpuinfo_max_freq : this file shows the maximum operating
153 frequency the processor can run at(in kHz)
Thomas Renningered129782009-02-04 01:17:41 +0100154cpuinfo_transition_latency The time it takes on this CPU to
155 switch between two frequencies in nano
156 seconds. If unknown or known to be
157 that high that the driver does not
158 work with the ondemand governor, -1
159 (CPUFREQ_ETERNAL) will be returned.
160 Using this information can be useful
161 to choose an appropriate polling
162 frequency for a kernel governor or
163 userspace daemon. Make sure to not
164 switch the frequency too often
165 resulting in performance loss.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700166scaling_driver : this file shows what cpufreq driver is
167 used to set the frequency on this CPU
168
169scaling_available_governors : this file shows the CPUfreq governors
170 available in this kernel. You can see the
171 currently activated governor in
172
173scaling_governor, and by "echoing" the name of another
174 governor you can change it. Please note
175 that some governors won't load - they only
176 work on some specific architectures or
177 processors.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700178
Naga Chumbalkarda470db2009-06-29 19:53:41 +0000179cpuinfo_cur_freq : Current frequency of the CPU as obtained from
180 the hardware, in KHz. This is the frequency
181 the CPU actually runs at.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700182
183scaling_available_frequencies : List of available frequencies, in KHz.
184
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200185scaling_min_freq and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700186scaling_max_freq show the current "policy limits" (in
187 kHz). By echoing new values into these
188 files, you can change these limits.
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200189 NOTE: when setting a policy you need to
190 first set scaling_max_freq, then
191 scaling_min_freq.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192
Viresh Kumar951fc5f2013-01-31 02:03:53 +0000193affected_cpus : List of Online CPUs that require software
194 coordination of frequency.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700195
Viresh Kumar951fc5f2013-01-31 02:03:53 +0000196related_cpus : List of Online + Offline CPUs that need software
197 coordination of frequency.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700198
Naga Chumbalkarda470db2009-06-29 19:53:41 +0000199scaling_cur_freq : Current frequency of the CPU as determined by
200 the governor and cpufreq core, in KHz. This is
201 the frequency the kernel thinks the CPU runs
202 at.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700203
Thomas Renningere2f74f32009-11-19 12:31:01 +0100204bios_limit : If the BIOS tells the OS to limit a CPU to
205 lower frequencies, the user can read out the
206 maximum available frequency from this file.
207 This typically can happen through (often not
208 intended) BIOS settings, restrictions
209 triggered through a service processor or other
210 BIOS/HW based implementations.
211 This does not cover thermal ACPI limitations
212 which can be detected through the generic
213 thermal driver.
214
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215If you have selected the "userspace" governor which allows you to
216set the CPU operating frequency to a specific value, you can read out
217the current frequency in
218
219scaling_setspeed. By "echoing" a new frequency into this
220 you can change the speed of the CPU,
221 but only within the limits of
222 scaling_min_freq and scaling_max_freq.