---
name: "amdsmu"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/amdsmu"
---

# amdsmu(4)

device driver for the AMD System Management Unit

## NAME

**amdsmu** – device driver for the AMD System Management Unit

## SYNOPSIS

**device** **amdsmu**

## DESCRIPTION

The **amdsmu** driver provides support for the System Management Unit (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.

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.

## HARDWARE

The **amdsmu** driver supports the System Management Unit in the following AMD mobile processors:

- Cezanne

- Rembrandt

- Phoenix

- Krackan Point

## SYSCTL VARIABLES

The driver exposes information through the following [sysctl(8)](/sysctl/8.md) variables under the *dev.amdsmu.%d* tree.

### Firmware version

- *dev.amdsmu.%d.program*

  SMU program number.

- *dev.amdsmu.%d.version\_major*

  SMU firmware major version number.

- *dev.amdsmu.%d.version\_minor*

  SMU firmware minor version number.

- *dev.amdsmu.%d.version\_revision*

  SMU firmware revision number.

### Power management metrics

The following variables are located under *dev.amdsmu.%d.metrics* and reflect measurements from the most recent sleep cycle. Time values are in microseconds.

- *dev.amdsmu.%d.metrics.table\_version*

  Version of the SMU metrics table reported by the firmware.

- *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.

- *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.

- *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.

- *dev.amdsmu.%d.metrics.time\_last\_entering\_s0i3*

  Time spent transitioning into S0i3 during the last sleep cycle.

- *dev.amdsmu.%d.metrics.total\_time\_entering\_s0i3*

  Total cumulative time spent transitioning into S0i3 across all sleep cycles.

- *dev.amdsmu.%d.metrics.time\_last\_resuming*

  Time spent resuming from the last sleep cycle.

- *dev.amdsmu.%d.metrics.total\_time\_resuming*

  Total cumulative time spent resuming from sleep.

- *dev.amdsmu.%d.metrics.time\_last\_in\_s0i3*

  Time spent in S0i3 during the last sleep cycle.

- *dev.amdsmu.%d.metrics.total\_time\_in\_s0i3*

  Total cumulative time spent in S0i3 across all sleep cycles.

- *dev.amdsmu.%d.metrics.time\_last\_in\_sw\_drips*

  Time the system spent awake (i.e., not in S0i3) during the last sleep cycle. The term "SW DRIPS" is a bit of a misnomer.

- *dev.amdsmu.%d.metrics.total\_time\_in\_sw\_drips*

  Total cumulative time the system has spent awake during sleep cycles.

### IP blocks

Each hardware IP block that the SMU tracks is exposed under *dev.amdsmu.%d.ip\_blocks.\<name\>*, where **\<name\>** is one of **DISPLAY**, **CPU**, **GFX**, **VDD**, **ACP**, **VCN**, **ISP**, **NBIO**, **DF**, **LAPIC**, **USB3\_0** through **USB3\_4**, **USB4\_0**, **USB4\_1**, **MPM**, **JPEG**, **IPU**, **UMSCH**, or **VPE** (availability depends on the processor model). Each IP block node contains the following variables:

- *dev.amdsmu.%d.ip\_blocks.\<name\>.active*

  Boolean indicating whether this IP block is active i.e., whether it could potentially constrain S0i3 entry.

- *dev.amdsmu.%d.ip\_blocks.\<name\>.last\_time*

  Time in microseconds that this IP block spent active (and thus blocking S0i3 entry) during the last sleep cycle. If this value equals the value of *dev.amdsmu.%d.metrics.time\_last\_in\_sw\_drips*, then this IP block was preventing entry into S0i3 during the last cycle.

### Idlemask

- *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.

## SEE ALSO

[acpi(4)](/acpi/4.md), [amdsmn(4)](/amdsmn/4.md), [amdtemp(4)](/amdtemp/4.md), [sysctl(8)](/sysctl/8.md)

## HISTORY

The **amdsmu** driver first appeared in FreeBSD 15.0.

## AUTHORS

Aymeric Wibo ⟨*obiwac@FreeBSD.org*⟩

Development was sponsored by the FreeBSD Foundation.

## BUGS

The *dev.amdsmu.%d.ip\_blocks.USB4\_0.last\_time* value typically contains garbage and should not be relied upon.

USB4 blocking S0i3 entry appears to be reported by the *USB3\_0* through *USB3\_4* IP block metrics rather than through the dedicated USB4 blocks.
