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