159 lines
4.7 KiB
Groff
159 lines
4.7 KiB
Groff
.\" $NetBSD: cpuctl.8,v 1.23 2024/03/19 01:19:11 gutteridge Exp $
|
|
.\"
|
|
.\" Copyright (c) 2007, 2008, 2012, 2015 The NetBSD Foundation, Inc.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by Andrew Doran.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.Dd September 12, 2023
|
|
.Dt CPUCTL 8
|
|
.Os
|
|
.Sh NAME
|
|
.Nm cpuctl
|
|
.Nd program to control CPUs
|
|
.Sh SYNOPSIS
|
|
.Nm cpuctl
|
|
.Op Fl v
|
|
.Ar command
|
|
.Op Ar arguments
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
command can be used to control and inspect the state of CPUs in the system.
|
|
.Pp
|
|
The first argument,
|
|
.Ar command ,
|
|
specifies the action to take.
|
|
Valid commands are:
|
|
.Bl -tag -width identify
|
|
.It identify Ar cpu Op Ar cpu ...
|
|
Output information on the specified CPU's features and capabilities.
|
|
Not available on all architectures.
|
|
.It intr Ar cpu Op Ar cpu ...
|
|
Enable interrupts for the specified CPUs if supported.
|
|
.It list
|
|
For each CPU in the system, display the current state and time of the last
|
|
state change.
|
|
.It nointr Ar cpu Op Ar cpu ...
|
|
Disable interrupts for the specified CPUs if supported.
|
|
.It offline Ar cpu Op Ar cpu ...
|
|
Set the specified CPUs off line.
|
|
.Pp
|
|
Unbound LWPs (lightweight processes) will not be executed on a CPU
|
|
while it is off line.
|
|
Bound LWPs will continue to be executed on the CPUs, and device interrupts
|
|
routed to the CPUs will continue to be handled.
|
|
A future release of the system may allow device interrupts to be re-routed
|
|
away from individual CPUs.
|
|
.Pp
|
|
At least one CPU in the system must remain on line.
|
|
.It online Ar cpu Op Ar cpu ...
|
|
Set the specified CPUs on line, making them available to run unbound LWPs.
|
|
.It ucode Xo
|
|
.Op Ar cpu
|
|
.Op Ar file
|
|
.Xc
|
|
This applies the microcode patch to CPUs.
|
|
Unless
|
|
.Fl v
|
|
was given, errors indicating that the microcode
|
|
already exists on the CPU in question are ignored.
|
|
If
|
|
.Ar cpu
|
|
is not specified or \-1, all CPUs are updated.
|
|
(AMD CPU updates need to update all CPUs at once.)
|
|
If
|
|
.Ar cpu
|
|
is \-2, the current CPUs are updated.
|
|
The default filename is used if no filename is specified.
|
|
The
|
|
.Ar file
|
|
pathname containing the ucode updates are searched relative to the
|
|
default firmware path found in
|
|
.Xr sysctl 7
|
|
.Pa hw.firmware.path .
|
|
The
|
|
.Cm identify
|
|
command prints the installed version on the specified CPUs.
|
|
On success the
|
|
.Cm identify
|
|
command shows different ucode versions before and after this command.
|
|
.Pp
|
|
Some problems will only be reported in the kernel message buffer,
|
|
so check
|
|
.Xr dmesg 8
|
|
in case of errors.
|
|
.El
|
|
.Pp
|
|
Valid flags are:
|
|
.Bl -tag -width indent
|
|
.It Fl v
|
|
Be more verbose.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width /dev/cpuctl -compact
|
|
.It Pa /dev/cpuctl
|
|
control device
|
|
.It Pa /libdata/firmware/x86/amd/
|
|
The directory to install the microcode file for AMD CPUs into.
|
|
The default filename is
|
|
.Pa microcode_amd.bin
|
|
for CPU families 0x10 to 0x14.
|
|
The default filename is
|
|
.Pa microcode_amd_famXXh.bin
|
|
where
|
|
.Dv XX
|
|
is the CPU family starting with 15 (hex).
|
|
Get it from
|
|
.Lk https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amd-ucode
|
|
.El
|
|
.Sh EXAMPLES
|
|
Run
|
|
.Dl cpuctl identify 0
|
|
and you should see something like this:
|
|
.Bd -literal -offset indent
|
|
cpu0: UCode version: 0x1000080
|
|
.Ed
|
|
.Pp
|
|
After applying the microcode patch with
|
|
.Dl cpuctl ucode 0
|
|
you can see with
|
|
.Dl cpuctl identify 0
|
|
that the patch got applied:
|
|
.Bd -literal -offset indent
|
|
cpu0: UCode version: 0x1000083
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr intrctl 8 ,
|
|
.Xr psrset 8 ,
|
|
.Xr schedctl 8 ,
|
|
.Xr sysctl 8 ,
|
|
.Xr firmload 9
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command first appeared in
|
|
.Nx 5.0 .
|