[580.76.05] Deadlock on Hibernate; Suspend works

TL;DR: I can suspend and resume successfully, trying to hibernate lock up my computer

I’m trying to enable hibernation on my system with the following configuration

  • GPU: 2080 Ti
  • OS: Arch Linux; up-to-date
  • Kernel: 6.16.4-arch1-1
  • Driver Version: 580.76.05 (currently using nvidia-open package from Arch repos)
  • Desktop: Wayland session via Hyprland; issue also occurs from TTY

I have enabled the various systemd-services:

[~] <> * systemctl status nvidia-{suspend,hibernate,resume,suspend-then-hibernate}
○ nvidia-suspend.service - NVIDIA system suspend actions
     Loaded: loaded (/usr/lib/systemd/system/nvidia-suspend.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/nvidia-suspend.service.d
             └─override.conf
     Active: inactive (dead)

○ nvidia-hibernate.service - NVIDIA system hibernate actions
     Loaded: loaded (/usr/lib/systemd/system/nvidia-hibernate.service; enabled; preset: disabled)
     Active: inactive (dead)

○ nvidia-resume.service - NVIDIA system resume actions
     Loaded: loaded (/usr/lib/systemd/system/nvidia-resume.service; enabled; preset: disabled)
     Active: inactive (dead)

○ nvidia-suspend-then-hibernate.service - NVIDIA actions for suspend-then-hibernate
     Loaded: loaded (/usr/lib/systemd/system/nvidia-suspend-then-hibernate.service; enabled; preset: disabled)
     Active: inactive (dead)

and as is default now on Arch PreserveVideoMemoryAllocations is enabled:

[~] <> * grep -e Preserve -e Temporary /proc/driver/nvidia/params
PreserveVideoMemoryAllocations: 1
TemporaryFilePath: "/var/tmp"

I have enough free disk space for the entire VRAM of my GPU (SWAP is on a separate partition)

[~] <> * df -h /var/tmp/
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/benediktDesktopVG-root   63G   49G   12G  82% /

and I also have set up other things required for hibernation such as swap and the kernel cmdline resume argument.

Suspending works as expected, no issues there. When I try to hibernate, my screen turns black and my PC locks up (I need to restart via longpressing the power button).
When I look at the journalctl logs of the previous boot after restarting I see these errors:

Aug 29 21:20:32 benediktDesktop kernel: INFO: task nvidia-modeset/:1033 blocked for more than 122 seconds.
Aug 29 21:20:32 benediktDesktop kernel:       Tainted: G           OE       6.16.4-arch1-1 #1
Aug 29 21:20:32 benediktDesktop kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Aug 29 21:20:32 benediktDesktop kernel: task:nvidia-modeset/ state:D stack:0     pid:1033  tgid:1033  ppid:2      task_flags:0x208040 flags:0x00004000
Aug 29 21:20:32 benediktDesktop kernel: Call Trace:
Aug 29 21:20:32 benediktDesktop kernel:  <TASK>
Aug 29 21:20:32 benediktDesktop kernel:  __schedule+0x409/0x1330
Aug 29 21:20:32 benediktDesktop kernel:  schedule+0x27/0xd0
Aug 29 21:20:32 benediktDesktop kernel:  schedule_preempt_disabled+0x15/0x30
Aug 29 21:20:32 benediktDesktop kernel:  rwsem_down_read_slowpath+0x25f/0x4d0
Aug 29 21:20:32 benediktDesktop kernel:  ? __pfx__main_loop+0x10/0x10 [nvidia_modeset 67073f9b1ac164a484166f3eb91f8f9e6efcf4be]
Aug 29 21:20:32 benediktDesktop kernel:  down_read+0x48/0xb0
Aug 29 21:20:32 benediktDesktop kernel:  nvkms_kthread_q_callback+0x144/0x170 [nvidia_modeset 67073f9b1ac164a484166f3eb91f8f9e6efcf4be]
Aug 29 21:20:32 benediktDesktop kernel:  _main_loop+0x93/0x150 [nvidia_modeset 67073f9b1ac164a484166f3eb91f8f9e6efcf4be]
Aug 29 21:20:32 benediktDesktop kernel:  ? srso_alias_return_thunk+0x5/0xfbef5
Aug 29 21:20:32 benediktDesktop kernel:  ? __pfx__main_loop+0x10/0x10 [nvidia_modeset 67073f9b1ac164a484166f3eb91f8f9e6efcf4be]
Aug 29 21:20:32 benediktDesktop kernel:  kthread+0xfc/0x240
Aug 29 21:20:32 benediktDesktop kernel:  ? __pfx_kthread+0x10/0x10
Aug 29 21:20:32 benediktDesktop kernel:  ret_from_fork+0x19a/0x1d0
Aug 29 21:20:32 benediktDesktop kernel:  ? __pfx_kthread+0x10/0x10
Aug 29 21:20:32 benediktDesktop kernel:  ret_from_fork_asm+0x1a/0x30
Aug 29 21:20:32 benediktDesktop kernel:  </TASK>

I also experience these issues with the nvidia and nvidia-dkms packages from Arch repos and with PreserveVideoMemoryAllocations disabled.

Let me know if you need additional information/logs and thanks in advance for any help :)

PS: Iirc there was a post-limit for new accounts (such as mine) on this forum, so it might take a bit before I can reply again here.

Just a quick update: This issue is still present with the new 580.82.09 driver

Hi @GamerBene19

Thank you for reporting issue, could you please help to share nvidia bug report from repro state.

nvidia-bug-report.log.gz (1.6 MB)

@GamerBene19 I was experiencing the same issue you’re facing on Pop OS 24.04. I wrote up my solution here .

After disabling NVreg_PreserveVideoMemoryAllocations , I no longer see nvidia-modeset blocking during suspend.

Thanks for your writeup and suggestion. Unfortunately disabling NVreg_PreserveVideoMemoryAllocations is not really an option for me as certain things break with it disabled.

I have recently switched from Arch to NixOS and now both suspending and hibernating work. I have no clue why it does now and did not before as far as I can tell NixOS does not do anything differently than what I did under Arch.

My current (NixOS) config regarding Nvidia looks like

{ config, ... }:
{

  # Enable OpenGL
  hardware.graphics = {
    enable = true;
  };

  # Load nvidia driver for Xorg and Wayland
  services.xserver.videoDrivers = [ "nvidia" ];

  hardware.nvidia = {
    # Modesetting is required.
    modesetting.enable = true;

    # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
    # Enable this if you have graphical corruption issues or application crashes after waking
    # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
    # of just the bare essentials.
    powerManagement.enable = true;

    # Fine-grained power management. Turns off GPU when not in use.
    # Experimental and only works on modern Nvidia GPUs (Turing or newer).
    powerManagement.finegrained = false;

    # Use the NVidia open source kernel module (not to be confused with the
    # independent third-party "nouveau" open source driver).
    # Support is limited to the Turing and later architectures. Full list of
    # supported GPUs is at:
    # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
    # Only available from driver 515.43.04+
    open = true;

    # Enable the Nvidia settings menu,
    # accessible via `nvidia-settings`.
    nvidiaSettings = true;

    # Optionally, you may need to select the appropriate driver version for your specific GPU.
    package = config.boot.kernelPackages.nvidiaPackages.stable;
  };
}

powerManagement.enable does enable the nvidia-{suspend,hibernate,…} services.

I have enabled early loading of nvidia kernel modules to fix a race condition that reset my console font with, but suspending/hibernating does work with and w/o these options. EDIT: This is wrong, hibernation breaks when this is enabled. See post below for more details. I have disabled the early loading of these modules again.

  boot.initrd = {
    kernelModules = [
      # Required for console-font to work properly
      # See: https://github.com/NixOS/nixpkgs/issues/219239
      "nvidia"
      "nvidia_modeset"
      "nvidia_uvm"
      "nvidia_drm"
    ];
  };

This config results in the following kernel parameters (according to /proc/cmdline)

nvidia-drm.modeset=1
nvidia-drm.fbdev=1
nvidia.NVreg_PreserveVideoMemoryAllocations=1
nvidia.NVreg_OpenRmEnableUnsupportedGpus=1

and as mentioned above I have all the nvidia kernel modules loaded.

I have also switched to the latest kerne with
boot.kernelPackages = pkgs.linuxPackages_latest; although hibernation also worked with the the default value of this setting (which I think is the LTS kernel).

As of now (nixpkgs rev fb7944c166a3b630f177938e478f0378e64ce108) with my config this results in the following versions:

  • kernel: 6.12.66
  • nvidia-driver: 580.126.09

I just noticed that I was still running the old kernel since I have not rebooted since switching the kernel package to ..._latest.

After a reboot I was running the latest kernel (6.18.6) and with that hibernation is broken (although no deadlock occurs).

I will try switching back to the older version to see if it works again.

Edit: Hibernation now is broken with the older kernel version too. journalctl reads

Jan 29 14:56:49 benedikt-desktop stage-1-init: \[Thu Jan 29 13:56:40 UTC 2026\] starting device mapper and LVM…
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image signature found, resuming
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: resume from hibernation
Jan 29 14:56:49 benedikt-desktop kernel: random: crng reseeded on system resumption
Jan 29 14:56:49 benedikt-desktop kernel: Freezing user space processes
Jan 29 14:56:49 benedikt-desktop kernel: Freezing user space processes completed (elapsed 0.001 seconds)
Jan 29 14:56:49 benedikt-desktop kernel: OOM killer disabled.
Jan 29 14:56:49 benedikt-desktop kernel: Freezing remaining freezable tasks
Jan 29 14:56:49 benedikt-desktop kernel: Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0x00000000-0x00000fff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0x000a0000-0x000fffff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0x09d82000-0x09ffffff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0x0a200000-0x0a20dfff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0xcae8c000-0xcae8cfff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0xcaeb6000-0xcaeb6fff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0xd775b000-0xd77b7fff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0xdab38000-0xddbfefff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Marking nosave pages: \[mem 0xdf000000-0xffffffff\]
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Basic memory bitmaps created
Jan 29 14:56:49 benedikt-desktop kernel: PM: Using 3 thread(s) for lzo decompression
Jan 29 14:56:49 benedikt-desktop kernel: PM: Loading and decompressing image data (2244728 pages)…
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:   0%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  10%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  20%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  30%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  40%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  50%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  60%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  70%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  80%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress:  90%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading progress: 100%
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image loading done
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Read 8978912 kbytes in 7.23 seconds (1241.89 MB/s)
Jan 29 14:56:49 benedikt-desktop kernel: PM: Image successfully loaded
Jan 29 14:56:49 benedikt-desktop kernel: printk: Suspending console(s) (use no_console_suspend to debug)
Jan 29 14:56:49 benedikt-desktop kernel: serial 00:04: disabled
Jan 29 14:56:49 benedikt-desktop kernel: NVRM: GPU 0000:2d:00.0: PreserveVideoMemoryAllocations module parameter is set. System Power Management attempted without driver procfs suspend interface. Please refer to the ‘Configuring Power Management Support’ section in the driver R>
Jan 29 14:56:49 benedikt-desktop kernel: nvidia 0000:2d:00.0: PM: pci_pm_freeze(): nv_pmops_freeze \[nvidia\] returns -5
Jan 29 14:56:49 benedikt-desktop kernel: nvidia 0000:2d:00.0: PM: dpm_run_callback(): pci_pm_freeze returns -5
Jan 29 14:56:49 benedikt-desktop kernel: nvidia 0000:2d:00.0: PM: failed to quiesce async: error -5
Jan 29 14:56:49 benedikt-desktop kernel: serial 00:04: activated
Jan 29 14:56:49 benedikt-desktop kernel: nvme nvme1: D3 entry latency set to 8 seconds
Jan 29 14:56:49 benedikt-desktop kernel: nvme nvme0: 16/0/0 default/read/poll queues
Jan 29 14:56:49 benedikt-desktop kernel: nvme nvme1: 16/0/0 default/read/poll queues
Jan 29 14:56:49 benedikt-desktop kernel: usb 8-2: reset SuperSpeed USB device number 2 using xhci_hcd
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Failed to load image, recovering.
Jan 29 14:56:49 benedikt-desktop kernel: ata4: SATA link down (SStatus 0 SControl 300)
Jan 29 14:56:49 benedikt-desktop kernel: ata1: SATA link down (SStatus 0 SControl 300)
Jan 29 14:56:49 benedikt-desktop kernel: ata3: SATA link down (SStatus 0 SControl 300)
Jan 29 14:56:49 benedikt-desktop kernel: ata2: SATA link down (SStatus 0 SControl 300)
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: Basic memory bitmaps freed
Jan 29 14:56:49 benedikt-desktop kernel: OOM killer enabled.
Jan 29 14:56:49 benedikt-desktop kernel: Restarting tasks … done.
Jan 29 14:56:49 benedikt-desktop kernel: PM: hibernation: resume failed (-5)

It looks like nvidia-hibernation was not used, but the service is enabled still

[~] <> * systemctl status nvidia-hibernate.service
○ nvidia-hibernate.service - NVIDIA system hibernate actions
     Loaded: loaded (/etc/systemd/system/nvidia-hibernate.service; enabled; preset: ignored)
     Active: inactive (dead)

Further edit: I did some more testing, when I disable the early loading of nvidia modules hibernation works – even with the newer kernel.