]> bbs.cooldavid.org Git - net-next-2.6.git/blame - Documentation/cpu-freq/user-guide.txt
Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6
[net-next-2.6.git] / Documentation / cpu-freq / user-guide.txt
CommitLineData
1da177e4
LT
1 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
121fe86b 261.6 Blackfin
1da177e4
LT
27
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
1da177e4
LT
34
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
9e2697ff 48Intel PXA
1da177e4
LT
49
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
8a655053
PM
95All SuperH processors supporting rate rounding through the clock
96framework are supported by cpufreq.
1da177e4 97
121fe86b
RG
981.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
1da177e4
LT
109
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)
ed129784
TR
154cpuinfo_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.
1da177e4
LT
166scaling_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.
605400a8 178
da470db1
NC
179cpuinfo_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.
605400a8
DW
182
183scaling_available_frequencies : List of available frequencies, in KHz.
184
9c9a43ed 185scaling_min_freq and
1da177e4
LT
186scaling_max_freq show the current "policy limits" (in
187 kHz). By echoing new values into these
188 files, you can change these limits.
9c9a43ed
MD
189 NOTE: when setting a policy you need to
190 first set scaling_max_freq, then
191 scaling_min_freq.
1da177e4 192
605400a8
DW
193affected_cpus : List of CPUs that require software coordination
194 of frequency.
195
196related_cpus : List of CPUs that need some sort of frequency
197 coordination, whether software or hardware.
198
199scaling_driver : Hardware driver for cpufreq.
200
da470db1
NC
201scaling_cur_freq : Current frequency of the CPU as determined by
202 the governor and cpufreq core, in KHz. This is
203 the frequency the kernel thinks the CPU runs
204 at.
1da177e4 205
e2f74f35
TR
206bios_limit : If the BIOS tells the OS to limit a CPU to
207 lower frequencies, the user can read out the
208 maximum available frequency from this file.
209 This typically can happen through (often not
210 intended) BIOS settings, restrictions
211 triggered through a service processor or other
212 BIOS/HW based implementations.
213 This does not cover thermal ACPI limitations
214 which can be detected through the generic
215 thermal driver.
216
1da177e4
LT
217If you have selected the "userspace" governor which allows you to
218set the CPU operating frequency to a specific value, you can read out
219the current frequency in
220
221scaling_setspeed. By "echoing" a new frequency into this
222 you can change the speed of the CPU,
223 but only within the limits of
224 scaling_min_freq and scaling_max_freq.