xref: /freebsd/share/man/man4/amdsmu.4 (revision 2072f71f810a2b163ea2010a86b7ab1afdb31330)
14733b4dcSAymeric Wibo.\" SPDX-License-Identifier: BSD-2-Clause
24733b4dcSAymeric Wibo.\"
34733b4dcSAymeric Wibo.\" Copyright (c) 2026 The FreeBSD Foundation
44733b4dcSAymeric Wibo.\"
54733b4dcSAymeric Wibo.\" This software was developed by Aymeric Wibo <obiwac@freebsd.org>
64733b4dcSAymeric Wibo.\" under sponsorship from the FreeBSD Foundation.
74733b4dcSAymeric Wibo.\"
8*2072f71fSAlexander Ziaee.Dd September 13, 2026
94733b4dcSAymeric Wibo.Dt AMDSMU 4
104733b4dcSAymeric Wibo.Os
114733b4dcSAymeric Wibo.Sh NAME
124733b4dcSAymeric Wibo.Nm amdsmu
134733b4dcSAymeric Wibo.Nd device driver for the AMD System Management Unit
144733b4dcSAymeric Wibo.Sh SYNOPSIS
15*2072f71fSAlexander Ziaee.Cd device amdsmu
164733b4dcSAymeric Wibo.Sh DESCRIPTION
174733b4dcSAymeric WiboThe
184733b4dcSAymeric Wibo.Nm
194733b4dcSAymeric Wibodriver provides support for the System Management Unit
204733b4dcSAymeric Wibo.Pq SMU
214733b4dcSAymeric Wibofor certain AMD mobile processors.
224733b4dcSAymeric WiboThe SMU is a firmware component responsible for managing system power states,
234733b4dcSAymeric Wiboand in particular for coordinating entry into and exit from the
244733b4dcSAymeric WiboS0ix suspend-to-idle sleep states.
254733b4dcSAymeric Wibo.Pp
264733b4dcSAymeric WiboThe driver communicates with the SMU over a register-based mailbox interface
274733b4dcSAymeric Wiboto query firmware version information, retrieve power management metrics,
284733b4dcSAymeric Wiboand hint to the SMU when the system is entering or leaving sleep.
294733b4dcSAymeric WiboThe driver registers ACPI suspend and resume event handlers to send the
304733b4dcSAymeric Wibosleep hint to the SMU and refresh metrics after each sleep cycle.
31*2072f71fSAlexander Ziaee.Sh HARDWARE
32*2072f71fSAlexander ZiaeeThe
33*2072f71fSAlexander Ziaee.Nm
34*2072f71fSAlexander Ziaeedriver supports the
35*2072f71fSAlexander ZiaeeSystem Management Unit in the following AMD mobile processors:
364733b4dcSAymeric Wibo.Pp
374733b4dcSAymeric Wibo.Bl -bullet -compact
384733b4dcSAymeric Wibo.It
394733b4dcSAymeric WiboCezanne
404733b4dcSAymeric Wibo.It
414733b4dcSAymeric WiboRembrandt
424733b4dcSAymeric Wibo.It
434733b4dcSAymeric WiboPhoenix
444733b4dcSAymeric Wibo.It
454733b4dcSAymeric WiboKrackan Point
464733b4dcSAymeric Wibo.El
474733b4dcSAymeric Wibo.Sh SYSCTL VARIABLES
484733b4dcSAymeric WiboThe driver exposes information through the following
494733b4dcSAymeric Wibo.Xr sysctl 8
504733b4dcSAymeric Wibovariables under the
514733b4dcSAymeric Wibo.Va dev.amdsmu.%d
524733b4dcSAymeric Wibotree.
534733b4dcSAymeric Wibo.Ss Firmware version
544733b4dcSAymeric Wibo.Bl -tag -width indent
554733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.program
564733b4dcSAymeric WiboSMU program number.
574733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.version_major
584733b4dcSAymeric WiboSMU firmware major version number.
594733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.version_minor
604733b4dcSAymeric WiboSMU firmware minor version number.
614733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.version_revision
624733b4dcSAymeric WiboSMU firmware revision number.
634733b4dcSAymeric Wibo.El
644733b4dcSAymeric Wibo.Ss Power management metrics
654733b4dcSAymeric WiboThe following variables are located under
664733b4dcSAymeric Wibo.Va dev.amdsmu.%d.metrics
674733b4dcSAymeric Wiboand reflect measurements from the most recent sleep cycle.
684733b4dcSAymeric WiboTime values are in microseconds.
694733b4dcSAymeric Wibo.Bl -tag -width indent
704733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.table_version
714733b4dcSAymeric WiboVersion of the SMU metrics table reported by the firmware.
724733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.hint_count
734733b4dcSAymeric WiboNumber of times the sleep hint has been sent to the SMU.
744733b4dcSAymeric WiboIncremented each time the system enters suspend-to-idle.
754733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.s0i3_last_entry_status
764733b4dcSAymeric WiboSet to 1 if the last S0i3 entry was successful, 0 otherwise.
774733b4dcSAymeric WiboUseful for diagnosing failed S0i3 transitions.
784733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.time_last_in_s0i2
794733b4dcSAymeric WiboTime spent in S0i2 during the last sleep cycle.
804733b4dcSAymeric WiboThis is not relevant most of the time.
814733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.time_last_entering_s0i3
824733b4dcSAymeric WiboTime spent transitioning into S0i3 during the last sleep cycle.
834733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.total_time_entering_s0i3
844733b4dcSAymeric WiboTotal cumulative time spent transitioning into S0i3 across all sleep cycles.
854733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.time_last_resuming
864733b4dcSAymeric WiboTime spent resuming from the last sleep cycle.
874733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.total_time_resuming
884733b4dcSAymeric WiboTotal cumulative time spent resuming from sleep.
894733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.time_last_in_s0i3
904733b4dcSAymeric WiboTime spent in S0i3 during the last sleep cycle.
914733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.total_time_in_s0i3
924733b4dcSAymeric WiboTotal cumulative time spent in S0i3 across all sleep cycles.
934733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.time_last_in_sw_drips
944733b4dcSAymeric WiboTime the system spent awake
954733b4dcSAymeric Wibo.Pq i.e., not in S0i3
964733b4dcSAymeric Wiboduring the last sleep cycle.
974733b4dcSAymeric WiboThe term "SW DRIPS" is a bit of a misnomer.
984733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.metrics.total_time_in_sw_drips
994733b4dcSAymeric WiboTotal cumulative time the system has spent awake during sleep cycles.
1004733b4dcSAymeric Wibo.El
1014733b4dcSAymeric Wibo.Ss IP blocks
1024733b4dcSAymeric WiboEach hardware IP block that the SMU tracks is exposed under
1034733b4dcSAymeric Wibo.Va dev.amdsmu.%d.ip_blocks.<name> ,
1044733b4dcSAymeric Wibowhere
1054733b4dcSAymeric Wibo.Sy <name>
1064733b4dcSAymeric Wibois one of
1074733b4dcSAymeric Wibo.Sy DISPLAY ,
1084733b4dcSAymeric Wibo.Sy CPU ,
1094733b4dcSAymeric Wibo.Sy GFX ,
1104733b4dcSAymeric Wibo.Sy VDD ,
1114733b4dcSAymeric Wibo.Sy ACP ,
1124733b4dcSAymeric Wibo.Sy VCN ,
1134733b4dcSAymeric Wibo.Sy ISP ,
1144733b4dcSAymeric Wibo.Sy NBIO ,
1154733b4dcSAymeric Wibo.Sy DF ,
1164733b4dcSAymeric Wibo.Sy LAPIC ,
1174733b4dcSAymeric Wibo.Sy USB3_0
1184733b4dcSAymeric Wibothrough
1194733b4dcSAymeric Wibo.Sy USB3_4 ,
1204733b4dcSAymeric Wibo.Sy USB4_0 ,
1214733b4dcSAymeric Wibo.Sy USB4_1 ,
1224733b4dcSAymeric Wibo.Sy MPM ,
1234733b4dcSAymeric Wibo.Sy JPEG ,
1244733b4dcSAymeric Wibo.Sy IPU ,
1254733b4dcSAymeric Wibo.Sy UMSCH ,
1264733b4dcSAymeric Wiboor
1274733b4dcSAymeric Wibo.Sy VPE
1284733b4dcSAymeric Wibo(availability depends on the processor model).
1294733b4dcSAymeric WiboEach IP block node contains the following variables:
1304733b4dcSAymeric Wibo.Bl -tag -width indent
1314733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.ip_blocks.<name>.active
1324733b4dcSAymeric WiboBoolean indicating whether this IP block is active
1334733b4dcSAymeric Wiboi.e., whether it could potentially constrain S0i3 entry.
1344733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.ip_blocks.<name>.last_time
1354733b4dcSAymeric WiboTime in microseconds that this IP block spent active
1364733b4dcSAymeric Wibo.Pq and thus blocking S0i3 entry
1374733b4dcSAymeric Wiboduring the last sleep cycle.
1384733b4dcSAymeric WiboIf this value equals the value of
1394733b4dcSAymeric Wibo.Va dev.amdsmu.%d.metrics.time_last_in_sw_drips ,
1404733b4dcSAymeric Wibothen this IP block was preventing entry into S0i3 during the last cycle.
1414733b4dcSAymeric Wibo.El
1424733b4dcSAymeric Wibo.Ss Idlemask
1434733b4dcSAymeric Wibo.Bl -tag -width indent
1444733b4dcSAymeric Wibo.It Va dev.amdsmu.%d.idlemask
1454733b4dcSAymeric WiboRaw idlemask value read from the SMU.
1464733b4dcSAymeric WiboThis is an undocumented register intended to assist AMD in debugging
1474733b4dcSAymeric Wibopower management issues.
1484733b4dcSAymeric WiboIts interpretation is hardware-specific and not defined by any public
1494733b4dcSAymeric Wibospecification.
1504733b4dcSAymeric Wibo.El
1514733b4dcSAymeric Wibo.Sh SEE ALSO
1524733b4dcSAymeric Wibo.Xr acpi 4 ,
1534733b4dcSAymeric Wibo.Xr amdsmn 4 ,
1544733b4dcSAymeric Wibo.Xr amdtemp 4 ,
1554733b4dcSAymeric Wibo.Xr sysctl 8
1564733b4dcSAymeric Wibo.Sh HISTORY
1574733b4dcSAymeric WiboThe
1584733b4dcSAymeric Wibo.Nm
1594733b4dcSAymeric Wibodriver first appeared in
1604733b4dcSAymeric Wibo.Fx 15.0 .
1614733b4dcSAymeric Wibo.Sh AUTHORS
1624733b4dcSAymeric Wibo.An Aymeric Wibo Aq Mt obiwac@FreeBSD.org
1634733b4dcSAymeric Wibo.Pp
1644733b4dcSAymeric WiboDevelopment was sponsored by the
165ee13bfb6SAymeric Wibo.An -nosplit
1664733b4dcSAymeric Wibo.An FreeBSD Foundation .
1674733b4dcSAymeric Wibo.Sh BUGS
1684733b4dcSAymeric WiboThe
1694733b4dcSAymeric Wibo.Va dev.amdsmu.%d.ip_blocks.USB4_0.last_time
1704733b4dcSAymeric Wibovalue typically contains garbage and should not be relied upon.
1714733b4dcSAymeric Wibo.Pp
172ee13bfb6SAymeric WiboUSB4 blocking S0i3 entry appears to be reported by the
1734733b4dcSAymeric Wibo.Va USB3_0
1744733b4dcSAymeric Wibothrough
1754733b4dcSAymeric Wibo.Va USB3_4
1764733b4dcSAymeric WiboIP block metrics rather than through the dedicated USB4 blocks.
177