xref: /freebsd/usr.sbin/cpucontrol/cpucontrol.8 (revision 4b06638f20c8271aa9dd4c9f2e3b7d3e4908506d)
1e085f869SStanislav Sedov.\" Copyright (c) 2006, 2008 Stanislav Sedov <stas@FreeBSD.org>.
2e085f869SStanislav Sedov.\" All rights reserved.
3e085f869SStanislav Sedov.\"
4e085f869SStanislav Sedov.\" Redistribution and use in source and binary forms, with or without
5e085f869SStanislav Sedov.\" modification, are permitted provided that the following conditions
6e085f869SStanislav Sedov.\" are met:
7e085f869SStanislav Sedov.\" 1. Redistributions of source code must retain the above copyright
8e085f869SStanislav Sedov.\"    notice, this list of conditions and the following disclaimer.
9e085f869SStanislav Sedov.\" 2. Redistributions in binary form must reproduce the above copyright
10e085f869SStanislav Sedov.\"    notice, this list of conditions and the following disclaimer in the
11e085f869SStanislav Sedov.\"    documentation and/or other materials provided with the distribution.
12e085f869SStanislav Sedov.\"
13e085f869SStanislav Sedov.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14e085f869SStanislav Sedov.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15e085f869SStanislav Sedov.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16e085f869SStanislav Sedov.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17e085f869SStanislav Sedov.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18e085f869SStanislav Sedov.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19e085f869SStanislav Sedov.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20e085f869SStanislav Sedov.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21e085f869SStanislav Sedov.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22e085f869SStanislav Sedov.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23e085f869SStanislav Sedov.\" SUCH DAMAGE.
24e085f869SStanislav Sedov.\"
25e085f869SStanislav Sedov.\" $FreeBSD$
26e085f869SStanislav Sedov.\"
27*4b06638fSKonstantin Belousov.Dd September 30, 2017
28e085f869SStanislav Sedov.Dt CPUCONTROL 8
29e085f869SStanislav Sedov.Os
30e085f869SStanislav Sedov.Sh NAME
31e085f869SStanislav Sedov.Nm cpucontrol
32e085f869SStanislav Sedov.Nd control utility for the
33e085f869SStanislav Sedov.Xr cpuctl 4
34344c81a1SWarren Blockdevice
35e085f869SStanislav Sedov.Sh SYNOPSIS
36e085f869SStanislav Sedov.Nm
37*4b06638fSKonstantin Belousov.Op Fl v
38b2d75854SStanislav Sedov.Fl m Ar msr
39b2d75854SStanislav Sedov.Bk
40b2d75854SStanislav Sedov.Ar device
41b2d75854SStanislav Sedov.Ek
42b2d75854SStanislav Sedov.Nm
43*4b06638fSKonstantin Belousov.Op Fl v
44b2d75854SStanislav Sedov.Fl m Ar msr Ns = Ns Ar value
45b2d75854SStanislav Sedov.Bk
46b2d75854SStanislav Sedov.Ar device
47b2d75854SStanislav Sedov.Ek
48b2d75854SStanislav Sedov.Nm
49*4b06638fSKonstantin Belousov.Op Fl v
50b2d75854SStanislav Sedov.Fl m Ar msr Ns &= Ns Ar mask
51b2d75854SStanislav Sedov.Bk
52b2d75854SStanislav Sedov.Ar device
53b2d75854SStanislav Sedov.Ek
54b2d75854SStanislav Sedov.Nm
55*4b06638fSKonstantin Belousov.Op Fl v
56b2d75854SStanislav Sedov.Fl m Ar msr Ns |= Ns Ar mask
57e085f869SStanislav Sedov.Bk
58e085f869SStanislav Sedov.Ar device
59e085f869SStanislav Sedov.Ek
60e085f869SStanislav Sedov.Nm
61*4b06638fSKonstantin Belousov.Op Fl v
62e085f869SStanislav Sedov.Fl i Ar level
63e085f869SStanislav Sedov.Bk
64e085f869SStanislav Sedov.Ar device
65e085f869SStanislav Sedov.Ek
66e085f869SStanislav Sedov.Nm
67*4b06638fSKonstantin Belousov.Op Fl v
68aa1cb750SAttilio Rao.Fl i Ar level,level_type
69aa1cb750SAttilio Rao.Bk
70aa1cb750SAttilio Rao.Ar device
71aa1cb750SAttilio Rao.Ek
72aa1cb750SAttilio Rao.Nm
73*4b06638fSKonstantin Belousov.Op Fl vn
74e085f869SStanislav Sedov.Op Fl d Ar datadir
75e085f869SStanislav Sedov.Fl u
76e085f869SStanislav Sedov.Bk
77e085f869SStanislav Sedov.Ar device
78e085f869SStanislav Sedov.Ek
79e085f869SStanislav Sedov.Sh DESCRIPTION
80e085f869SStanislav SedovThe
81e085f869SStanislav Sedov.Nm
826d850876SChristian Bruefferutility can be used to read and write arbitrary machine-specific
836d850876SChristian BruefferCPU registers via the
84e085f869SStanislav Sedov.Xr cpuctl 4
856d850876SChristian Bruefferspecial device.
866d850876SChristian BruefferIt can also be used to apply CPU firmware updates.
87e085f869SStanislav Sedov.Pp
88e085f869SStanislav SedovThe following options are available:
89e085f869SStanislav Sedov.Bl -tag -width indent
90e085f869SStanislav Sedov.It Fl d Ar datadir
91*4b06638fSKonstantin BelousovDirectory paths where to look for microcode images.
926d850876SChristian BruefferThe option can be specified multiple times.
93*4b06638fSKonstantin BelousovThe paths are added in order of the options appearance on the command
94*4b06638fSKonstantin Belousovline, default directories are appended after the user-supplied paths.
95*4b06638fSKonstantin Belousov.It Fl n
96*4b06638fSKonstantin BelousovDo not look for the microcode images in the standard directories.
97*4b06638fSKonstantin BelousovCurrently standard directory to look for the microcode update files is
98*4b06638fSKonstantin Belousov.Pa /usr/local/share/cpucontrol .
9932cb21c9SKonstantin Belousov.It Fl m Ar msr
100b2d75854SStanislav SedovShow value of the specified MSR.
101b2d75854SStanislav SedovMSR register number should be given as a hexadecimal number.
10232cb21c9SKonstantin BelousovThe high word is printed first, then the low word is printed second.
103b2d75854SStanislav Sedov.It Fl m Ar msr Ns = Ns Ar value
104b2d75854SStanislav SedovStore the
105b2d75854SStanislav Sedov.Ar value
106b2d75854SStanislav Sedovin the specified MSR register.
107b2d75854SStanislav SedovThe
108b2d75854SStanislav Sedov.Ar value
109b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
110b2d75854SStanislav SedovIn this case the inverted value of argument will be stored in the register.
111b2d75854SStanislav Sedov.It Fl m Ar msr Ns &= Ns Ar mask
112b2d75854SStanislav SedovStore the result of bitwise AND operation between
113b2d75854SStanislav Sedov.Ar mask
114b2d75854SStanislav Sedovand the current MSR value in the MSR register.
115b2d75854SStanislav SedovThe
116b2d75854SStanislav Sedov.Ar mask
117b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
118b2d75854SStanislav SedovIn this case the inverted value of mask will be used.
119b2d75854SStanislav Sedov.It Fl m Ar msr Ns |= Ns Ar mask
120b2d75854SStanislav SedovStore the result of bitwise OR operation between
121b2d75854SStanislav Sedov.Ar mask
122b2d75854SStanislav Sedovand the current MSR value in the MSR register.
123b2d75854SStanislav SedovThe
124b2d75854SStanislav Sedov.Ar mask
125b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
126b2d75854SStanislav SedovIn this case the inverted value of mask will be used.
127e085f869SStanislav Sedov.It Fl i Ar level
1286d850876SChristian BruefferRetrieve CPUID info.
1296d850876SChristian BruefferLevel should be given as a hex number.
130aa1cb750SAttilio Rao.It Fl i Ar level,level_type
131aa1cb750SAttilio RaoRetrieve CPUID info.
132aa1cb750SAttilio RaoLevel and level_type should be given as hex numbers.
133e085f869SStanislav Sedov.It Fl u
1346d850876SChristian BruefferApply CPU firmware updates.
1356d850876SChristian BruefferThe
136e085f869SStanislav Sedov.Nm
137e085f869SStanislav Sedovutility will walk through the configured data directories
13863a07fdbSStanislav Sedovand apply all firmware updates available for this CPU.
139e085f869SStanislav Sedov.It Fl v
140e085f869SStanislav SedovIncrease the verbosity level.
141e085f869SStanislav Sedov.It Fl h
142e085f869SStanislav SedovShow help message.
143e085f869SStanislav Sedov.El
144e085f869SStanislav Sedov.Sh EXIT STATUS
1457848de15SDaniel Gerzo.Ex -std
146e085f869SStanislav Sedov.Sh EXAMPLES
147e085f869SStanislav SedovThe command
148e085f869SStanislav Sedov.Pp
149e085f869SStanislav Sedov.Dq Li "cpucontrol -m 0x10 /dev/cpuctl0"
150e085f869SStanislav Sedov.Pp
151e085f869SStanislav Sedovwill read the contents of TSC MSR from CPU 0.
152e085f869SStanislav Sedov.Pp
153e085f869SStanislav SedovTo set the CPU 0 TSC MSR register value to 0x1 issue
154e085f869SStanislav Sedov.Pp
155b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10=0x1 /dev/cpuctl0" .
156b2d75854SStanislav Sedov.Pp
157b2d75854SStanislav SedovThe following command will clear the second bit of TSC register:
158b2d75854SStanislav Sedov.Pp
159b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10&=~0x02 /dev/cpuctl0" .
160b2d75854SStanislav Sedov.Pp
161b2d75854SStanislav SedovThe following command will set the forth and second bit of TSC register:
162b2d75854SStanislav Sedov.Pp
163b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10|=0x0a /dev/cpuctl0" .
164e085f869SStanislav Sedov.Pp
165e085f869SStanislav SedovThe command
166e085f869SStanislav Sedov.Pp
167e085f869SStanislav Sedov.Dq Li "cpucontrol -i 0x1 /dev/cpuctl1"
168e085f869SStanislav Sedov.Pp
169e085f869SStanislav Sedovwill retrieve the CPUID level 0x1 from CPU 1.
170e085f869SStanislav Sedov.Pp
1716d850876SChristian BruefferTo perform firmware updates on CPU 0 from images located at
172*4b06638fSKonstantin Belousov.Pa /usr/local/share/cpuctl
173e085f869SStanislav Sedovuse the following command:
174e085f869SStanislav Sedov.Pp
175*4b06638fSKonstantin Belousov.Dq Li "cpucontrol -nd /usr/local/share/cpuctl -u /dev/cpuctl0"
176e085f869SStanislav Sedov.Sh SEE ALSO
177e085f869SStanislav Sedov.Xr cpuctl 4
17863a07fdbSStanislav Sedov.Sh HISTORY
17963a07fdbSStanislav SedovThe
18063a07fdbSStanislav Sedov.Nm
18163a07fdbSStanislav Sedovutility first appeared in
1822a72feb4SChristian Brueffer.Fx 7.2 .
183e085f869SStanislav Sedov.Sh AUTHORS
184e085f869SStanislav SedovThe
185e085f869SStanislav Sedov.Nm
186e085f869SStanislav Sedovutility and this manual page was written by
18701c2b8acSBaptiste Daroussin.An Stanislav Sedov Aq Mt stas@FreeBSD.org .
188