amdsmu(4): Add manpage

Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D57366
This commit is contained in:
Aymeric Wibo
2026-06-11 16:39:37 -04:00
parent 0aa4c25f3e
commit 4733b4dca5
2 changed files with 186 additions and 0 deletions
+2
View File
@@ -50,6 +50,7 @@ MAN= aac.4 \
${_amdsbwd.4} \
${_amdsmb.4} \
${_amdsmn.4} \
${_amdsmu.4} \
${_amdtemp.4} \
${_bxe.4} \
${_aout.4} \
@@ -855,6 +856,7 @@ _aibs.4= aibs.4
_amdsbwd.4= amdsbwd.4
_amdsmb.4= amdsmb.4
_amdsmn.4= amdsmn.4
_amdsmu.4= amdsmu.4
_amdtemp.4= amdtemp.4
_asmc.4= asmc.4
_atopcase.4= atopcase.4
+184
View File
@@ -0,0 +1,184 @@
.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Copyright (c) 2026 The FreeBSD Foundation
.\"
.\" This software was developed by Aymeric Wibo <obiwac@freebsd.org>
.\" under sponsorship from the FreeBSD Foundation.
.\"
.Dd May 30, 2026
.Dt AMDSMU 4
.Os
.Sh NAME
.Nm amdsmu
.Nd device driver for the AMD System Management Unit
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device amdsmu"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr rc.conf 5 :
.Bd -literal -offset indent
kld_list="amdsmu"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides support for the System Management Unit
.Pq SMU
for certain AMD mobile processors.
The SMU is a firmware component responsible for managing system power states,
and in particular for coordinating entry into and exit from the
S0ix suspend-to-idle sleep states.
.Pp
The driver communicates with the SMU over a register-based mailbox interface
to query firmware version information, retrieve power management metrics,
and hint to the SMU when the system is entering or leaving sleep.
The driver registers ACPI suspend and resume event handlers to send the
sleep hint to the SMU and refresh metrics after each sleep cycle.
.Pp
The following AMD processors are supported:
.Pp
.Bl -bullet -compact
.It
Cezanne
.It
Rembrandt
.It
Phoenix
.It
Krackan Point
.El
.Sh SYSCTL VARIABLES
The driver exposes information through the following
.Xr sysctl 8
variables under the
.Va dev.amdsmu.%d
tree.
.Ss Firmware version
.Bl -tag -width indent
.It Va dev.amdsmu.%d.program
SMU program number.
.It Va dev.amdsmu.%d.version_major
SMU firmware major version number.
.It Va dev.amdsmu.%d.version_minor
SMU firmware minor version number.
.It Va dev.amdsmu.%d.version_revision
SMU firmware revision number.
.El
.Ss Power management metrics
The following variables are located under
.Va dev.amdsmu.%d.metrics
and reflect measurements from the most recent sleep cycle.
Time values are in microseconds.
.Bl -tag -width indent
.It Va dev.amdsmu.%d.metrics.table_version
Version of the SMU metrics table reported by the firmware.
.It Va dev.amdsmu.%d.metrics.hint_count
Number of times the sleep hint has been sent to the SMU.
Incremented each time the system enters suspend-to-idle.
.It Va dev.amdsmu.%d.metrics.s0i3_last_entry_status
Set to 1 if the last S0i3 entry was successful, 0 otherwise.
Useful for diagnosing failed S0i3 transitions.
.It Va dev.amdsmu.%d.metrics.time_last_in_s0i2
Time spent in S0i2 during the last sleep cycle.
This is not relevant most of the time.
.It Va dev.amdsmu.%d.metrics.time_last_entering_s0i3
Time spent transitioning into S0i3 during the last sleep cycle.
.It Va dev.amdsmu.%d.metrics.total_time_entering_s0i3
Total cumulative time spent transitioning into S0i3 across all sleep cycles.
.It Va dev.amdsmu.%d.metrics.time_last_resuming
Time spent resuming from the last sleep cycle.
.It Va dev.amdsmu.%d.metrics.total_time_resuming
Total cumulative time spent resuming from sleep.
.It Va dev.amdsmu.%d.metrics.time_last_in_s0i3
Time spent in S0i3 during the last sleep cycle.
.It Va dev.amdsmu.%d.metrics.total_time_in_s0i3
Total cumulative time spent in S0i3 across all sleep cycles.
.It Va dev.amdsmu.%d.metrics.time_last_in_sw_drips
Time the system spent awake
.Pq i.e., not in S0i3
during the last sleep cycle.
The term "SW DRIPS" is a bit of a misnomer.
.It Va dev.amdsmu.%d.metrics.total_time_in_sw_drips
Total cumulative time the system has spent awake during sleep cycles.
.El
.Ss IP blocks
Each hardware IP block that the SMU tracks is exposed under
.Va dev.amdsmu.%d.ip_blocks.<name> ,
where
.Sy <name>
is one of
.Sy DISPLAY ,
.Sy CPU ,
.Sy GFX ,
.Sy VDD ,
.Sy ACP ,
.Sy VCN ,
.Sy ISP ,
.Sy NBIO ,
.Sy DF ,
.Sy LAPIC ,
.Sy USB3_0
through
.Sy USB3_4 ,
.Sy USB4_0 ,
.Sy USB4_1 ,
.Sy MPM ,
.Sy JPEG ,
.Sy IPU ,
.Sy UMSCH ,
or
.Sy VPE
(availability depends on the processor model).
Each IP block node contains the following variables:
.Bl -tag -width indent
.It Va dev.amdsmu.%d.ip_blocks.<name>.active
Boolean indicating whether this IP block is active
i.e., whether it could potentially constrain S0i3 entry.
.It Va dev.amdsmu.%d.ip_blocks.<name>.last_time
Time in microseconds that this IP block spent active
.Pq and thus blocking S0i3 entry
during the last sleep cycle.
If this value equals the value of
.Va dev.amdsmu.%d.metrics.time_last_in_sw_drips ,
then this IP block was preventing entry into S0i3 during the last cycle.
.El
.Ss Idlemask
.Bl -tag -width indent
.It Va dev.amdsmu.%d.idlemask
Raw idlemask value read from the SMU.
This is an undocumented register intended to assist AMD in debugging
power management issues.
Its interpretation is hardware-specific and not defined by any public
specification.
.El
.Sh SEE ALSO
.Xr acpi 4 ,
.Xr amdsmn 4 ,
.Xr amdtemp 4 ,
.Xr sysctl 8
.Sh HISTORY
The
.Nm
driver first appeared in
.Fx 15.0 .
.Sh AUTHORS
.An Aymeric Wibo Aq Mt obiwac@FreeBSD.org
.Pp
Development was sponsored by the
.An FreeBSD Foundation .
.Sh BUGS
The
.Va dev.amdsmu.%d.ip_blocks.USB4_0.last_time
value typically contains garbage and should not be relied upon.
.Pp
USB4 blocking S0i3 entry appears to be reported through the
.Va USB3_0
through
.Va USB3_4
IP block metrics rather than through the dedicated USB4 blocks.