A little background to understand the problem and the redundancy of some of the suggested (working) solutions.
The NVIDIA Linux driver supports the suspend and hibernate power management operations via two different mechanisms:
Kernel driver callback: default mechanism - it is enabled and used without explicit configuration. The kernel driver receives callbacks from the Linux kernel to suspend, hibernate, and to resume each GPU for which a Linux PCI driver was registered.
/proc/driver/nvidia/suspend
: Instead of callbacks from the Linux kernel, this mechanism, when used, relies on a system management tool, such as systemd
, to issue suspend, hibernate, and resume commands to the NVIDIA kernel driver via the /proc/driver/nvidia/suspend
interface. It is still considered experimental, and requires explicit configuration to use.
The cleanest easy solution is to simply disable 2 (if enabled) and let the default mechanism 1 do the work.
Of course, advanced users can choose to fix [2] with explicit and accurate configuration - it is more powerful as this mechanism is designed to remove the limitations of the kernel driver callback mechanism 1. It supports power management with advanced CUDA features (such as UVM), and it is capable of saving and restoring all video memory allocations
Here are the steps for cleanest easy solution (su -
access presumed):
Check whether [2] is enabled:
systemctl status nvidia-suspend nvidia-hibernate nvidia-resume

Alternatively, do:
journalctl -b | grep suspend
If [2] is being used, you'll see it action explicitly in the logs like:
COMMAND=/bin/systemctl status nvidia-suspend nvidia-hibernate nvidia-resume
Okay, now that you know [2] is in use, let's disable it.:
systemctl disable nvidia-suspend nvidia-hibernate nvidia-resume
You should see a message stating:
Removed /etc/systemd/system/systemd-[suspend|hibernate|resume].service.requires/nvidia-[suspend|hibernate|resume].service
Now, you can repeat steps 1 or 2 and verify that the service(s) is/are indeed disabled:
rm /lib/systemd/system-sleep/nvidia
I've seen some working but inaccurate solutions like [1, 2, 3], where manual sudo rm /etc/systemd/system/systemd-suspend.service.requires/nvidia-suspend.service
is suggested. You should NOT do this.
Some other useful commands for diagnostics:
$ cat /proc/driver/nvidia/version
$ nvcc --version
Also Ctrl+Alt+F7 followed by
Ctrl+Alt+F1.