The Problem

With a dual GPU setup — AMD RX 6800 XT as the primary display driver plus NVIDIA RTX 3090 running proprietary drivers — the system hard-freezes shortly after waking from suspend. No kernel panic is logged; it’s an abrupt power loss that requires a hard reset.

Key indicators in dmesg after a failed resume:

amdgpu: MODE1 reset
SMU driver if version not matched
TSC found unstable after boot

USB devices also throw error -71 during resume. The root causes: both GPUs must coordinate S3 power states simultaneously, the proprietary NVIDIA module is unsigned (nvidia: module verification failed: signature missing — tainting kernel), and any ACPI/BIOS issues compound the problem.

The Solution

1. Update the BIOS first.

Outdated BIOS firmware has incomplete ACPI and interrupt routing tables. On ASUS boards, use EZ Flash 3 from within the BIOS menu. This is the single most impactful fix for suspend instability.

2. Keep GPU drivers current.

sudo dnf update akmod-nvidia nvidia\* amdgpu\*

After an NVIDIA driver update, wait for the kernel module to rebuild before rebooting:

sudo akmods --force
sudo dracut --force

3. Diagnose with suspend disabled.

If crashes continue, temporarily mask sleep targets to confirm the source:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Unmask when done:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

4. Use screen lock instead of suspend as a day-to-day workaround while diagnosing.

5. Check previous boot logs for crash signatures:

# Errors from the previous boot
sudo journalctl -b -1 -p 3 --no-pager | tail -50

# GPU-related messages after resume
sudo dmesg | grep -iE "error|fail|panic|amdgpu|nvidia"

# Abrupt boot endings
journalctl --list-boots | head -10

# Any core dumps
sudo coredumpctl list | tail -10

6. Last resort: disable one GPU in BIOS.

If stability is critical and workarounds aren’t enough, disabling the secondary GPU in BIOS eliminates the dual-GPU coordination problem entirely. Re-enable it when needed.