xref: /freebsd/usr.sbin/cpucontrol/cpucontrol.8 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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.\"
250530a936SKonstantin Belousov.Dd January 5, 2018
26e085f869SStanislav Sedov.Dt CPUCONTROL 8
27e085f869SStanislav Sedov.Os
28e085f869SStanislav Sedov.Sh NAME
29e085f869SStanislav Sedov.Nm cpucontrol
30e085f869SStanislav Sedov.Nd control utility for the
31e085f869SStanislav Sedov.Xr cpuctl 4
32344c81a1SWarren Blockdevice
33e085f869SStanislav Sedov.Sh SYNOPSIS
340530a936SKonstantin Belousov.Bk
35*856789c1SKonstantin Belousov.Nm
364b06638fSKonstantin Belousov.Op Fl v
37b2d75854SStanislav Sedov.Fl m Ar msr
38b2d75854SStanislav Sedov.Ar device
39b2d75854SStanislav Sedov.Ek
400530a936SKonstantin Belousov.Bk
41b2d75854SStanislav Sedov.Nm
424b06638fSKonstantin Belousov.Op Fl v
43b2d75854SStanislav Sedov.Fl m Ar msr Ns = Ns Ar value
44b2d75854SStanislav Sedov.Ar device
45b2d75854SStanislav Sedov.Ek
460530a936SKonstantin Belousov.Bk
47b2d75854SStanislav Sedov.Nm
484b06638fSKonstantin Belousov.Op Fl v
49b2d75854SStanislav Sedov.Fl m Ar msr Ns &= Ns Ar mask
50b2d75854SStanislav Sedov.Ar device
51b2d75854SStanislav Sedov.Ek
520530a936SKonstantin Belousov.Bk
53b2d75854SStanislav Sedov.Nm
544b06638fSKonstantin Belousov.Op Fl v
55b2d75854SStanislav Sedov.Fl m Ar msr Ns |= Ns Ar mask
56e085f869SStanislav Sedov.Ar device
57e085f869SStanislav Sedov.Ek
580530a936SKonstantin Belousov.Bk
59e085f869SStanislav Sedov.Nm
604b06638fSKonstantin Belousov.Op Fl v
61e085f869SStanislav Sedov.Fl i Ar level
62e085f869SStanislav Sedov.Ar device
63e085f869SStanislav Sedov.Ek
640530a936SKonstantin Belousov.Bk
65e085f869SStanislav Sedov.Nm
664b06638fSKonstantin Belousov.Op Fl v
67aa1cb750SAttilio Rao.Fl i Ar level,level_type
68aa1cb750SAttilio Rao.Ar device
69aa1cb750SAttilio Rao.Ek
700530a936SKonstantin Belousov.Bk
71aa1cb750SAttilio Rao.Nm
724b06638fSKonstantin Belousov.Op Fl vn
73e085f869SStanislav Sedov.Op Fl d Ar datadir
74e085f869SStanislav Sedov.Fl u
750530a936SKonstantin Belousov.Ar device
760530a936SKonstantin Belousov.Ek
77e085f869SStanislav Sedov.Bk
780530a936SKonstantin Belousov.Nm
790530a936SKonstantin Belousov.Fl e
80e085f869SStanislav Sedov.Ar device
81e085f869SStanislav Sedov.Ek
82e085f869SStanislav Sedov.Sh DESCRIPTION
83e085f869SStanislav SedovThe
84e085f869SStanislav Sedov.Nm
856d850876SChristian Bruefferutility can be used to read and write arbitrary machine-specific
866d850876SChristian BruefferCPU registers via the
87e085f869SStanislav Sedov.Xr cpuctl 4
886d850876SChristian Bruefferspecial device.
896d850876SChristian BruefferIt can also be used to apply CPU firmware updates.
90e085f869SStanislav Sedov.Pp
91e085f869SStanislav SedovThe following options are available:
92e085f869SStanislav Sedov.Bl -tag -width indent
93e085f869SStanislav Sedov.It Fl d Ar datadir
944b06638fSKonstantin BelousovDirectory paths where to look for microcode images.
956d850876SChristian BruefferThe option can be specified multiple times.
964b06638fSKonstantin BelousovThe paths are added in order of the options appearance on the command
974b06638fSKonstantin Belousovline, default directories are appended after the user-supplied paths.
984b06638fSKonstantin Belousov.It Fl n
994b06638fSKonstantin BelousovDo not look for the microcode images in the standard directories.
1004b06638fSKonstantin BelousovCurrently standard directory to look for the microcode update files is
1014b06638fSKonstantin Belousov.Pa /usr/local/share/cpucontrol .
10232cb21c9SKonstantin Belousov.It Fl m Ar msr
103b2d75854SStanislav SedovShow value of the specified MSR.
104b2d75854SStanislav SedovMSR register number should be given as a hexadecimal number.
10532cb21c9SKonstantin BelousovThe high word is printed first, then the low word is printed second.
106b2d75854SStanislav Sedov.It Fl m Ar msr Ns = Ns Ar value
107b2d75854SStanislav SedovStore the
108b2d75854SStanislav Sedov.Ar value
109b2d75854SStanislav Sedovin the specified MSR register.
110b2d75854SStanislav SedovThe
111b2d75854SStanislav Sedov.Ar value
112b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
113b2d75854SStanislav SedovIn this case the inverted value of argument will be stored in the register.
114b2d75854SStanislav Sedov.It Fl m Ar msr Ns &= Ns Ar mask
115b2d75854SStanislav SedovStore the result of bitwise AND operation between
116b2d75854SStanislav Sedov.Ar mask
117b2d75854SStanislav Sedovand the current MSR value in the MSR register.
118b2d75854SStanislav SedovThe
119b2d75854SStanislav Sedov.Ar mask
120b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
121b2d75854SStanislav SedovIn this case the inverted value of mask will be used.
122b2d75854SStanislav Sedov.It Fl m Ar msr Ns |= Ns Ar mask
123b2d75854SStanislav SedovStore the result of bitwise OR operation between
124b2d75854SStanislav Sedov.Ar mask
125b2d75854SStanislav Sedovand the current MSR value in the MSR register.
126b2d75854SStanislav SedovThe
127b2d75854SStanislav Sedov.Ar mask
128b2d75854SStanislav Sedovargument can be prefixed with ~ operator.
129b2d75854SStanislav SedovIn this case the inverted value of mask will be used.
130e085f869SStanislav Sedov.It Fl i Ar level
1316d850876SChristian BruefferRetrieve CPUID info.
1326d850876SChristian BruefferLevel should be given as a hex number.
133aa1cb750SAttilio Rao.It Fl i Ar level,level_type
134aa1cb750SAttilio RaoRetrieve CPUID info.
135aa1cb750SAttilio RaoLevel and level_type should be given as hex numbers.
136e085f869SStanislav Sedov.It Fl u
1376d850876SChristian BruefferApply CPU firmware updates.
1386d850876SChristian BruefferThe
139e085f869SStanislav Sedov.Nm
140e085f869SStanislav Sedovutility will walk through the configured data directories
14163a07fdbSStanislav Sedovand apply all firmware updates available for this CPU.
1420530a936SKonstantin Belousov.It Fl e
1430530a936SKonstantin BelousovRe-evaluate the kernel flags indicating the present CPU features.
1440530a936SKonstantin BelousovThis command is typically executed after a firmware update was applied
1450530a936SKonstantin Belousovwhich changes information reported by the
1460530a936SKonstantin Belousov.Dv CPUID
1470530a936SKonstantin Belousovinstruction.
1480530a936SKonstantin Belousov.Pp
1490530a936SKonstantin Belousov.Bf -symbolic
1500530a936SKonstantin BelousovOnly execute the
1510530a936SKonstantin Belousov.Fl e
1520530a936SKonstantin Belousovcommand after the microcode update was applied to all CPUs in the system.
1530530a936SKonstantin BelousovThe kernel does not operate correctly if the features of processors are
1540530a936SKonstantin Belousovnot identical.
1550530a936SKonstantin Belousov.Ef
156e085f869SStanislav Sedov.It Fl v
157e085f869SStanislav SedovIncrease the verbosity level.
158e085f869SStanislav Sedov.It Fl h
159e085f869SStanislav SedovShow help message.
160e085f869SStanislav Sedov.El
161e085f869SStanislav Sedov.Sh EXIT STATUS
1627848de15SDaniel Gerzo.Ex -std
163e085f869SStanislav Sedov.Sh EXAMPLES
164e085f869SStanislav SedovThe command
165e085f869SStanislav Sedov.Pp
166e085f869SStanislav Sedov.Dq Li "cpucontrol -m 0x10 /dev/cpuctl0"
167e085f869SStanislav Sedov.Pp
168e085f869SStanislav Sedovwill read the contents of TSC MSR from CPU 0.
169e085f869SStanislav Sedov.Pp
170e085f869SStanislav SedovTo set the CPU 0 TSC MSR register value to 0x1 issue
171e085f869SStanislav Sedov.Pp
172b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10=0x1 /dev/cpuctl0" .
173b2d75854SStanislav Sedov.Pp
174b2d75854SStanislav SedovThe following command will clear the second bit of TSC register:
175b2d75854SStanislav Sedov.Pp
176b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10&=~0x02 /dev/cpuctl0" .
177b2d75854SStanislav Sedov.Pp
178b2d75854SStanislav SedovThe following command will set the forth and second bit of TSC register:
179b2d75854SStanislav Sedov.Pp
180b2d75854SStanislav Sedov.Dq Li "cpucontrol -m 0x10|=0x0a /dev/cpuctl0" .
181e085f869SStanislav Sedov.Pp
182e085f869SStanislav SedovThe command
183e085f869SStanislav Sedov.Pp
184e085f869SStanislav Sedov.Dq Li "cpucontrol -i 0x1 /dev/cpuctl1"
185e085f869SStanislav Sedov.Pp
186e085f869SStanislav Sedovwill retrieve the CPUID level 0x1 from CPU 1.
187e085f869SStanislav Sedov.Pp
1886d850876SChristian BruefferTo perform firmware updates on CPU 0 from images located at
1894b06638fSKonstantin Belousov.Pa /usr/local/share/cpuctl
190e085f869SStanislav Sedovuse the following command:
191e085f869SStanislav Sedov.Pp
1924b06638fSKonstantin Belousov.Dq Li "cpucontrol -nd /usr/local/share/cpuctl -u /dev/cpuctl0"
193e085f869SStanislav Sedov.Sh SEE ALSO
194e085f869SStanislav Sedov.Xr cpuctl 4
19563a07fdbSStanislav Sedov.Sh HISTORY
19663a07fdbSStanislav SedovThe
19763a07fdbSStanislav Sedov.Nm
19863a07fdbSStanislav Sedovutility first appeared in
1992a72feb4SChristian Brueffer.Fx 7.2 .
200e085f869SStanislav Sedov.Sh AUTHORS
201e085f869SStanislav SedovThe
202e085f869SStanislav Sedov.Nm
203e085f869SStanislav Sedovutility and this manual page was written by
20401c2b8acSBaptiste Daroussin.An Stanislav Sedov Aq Mt stas@FreeBSD.org .
205