Resume after hibernation broken with swap properly setup

I guess the issue is the usb sleep mode which takes some time to wake up and handshake with the drive.

Can you turn off or change USB sleep mode settings in the BIOS? Can you set them to “always on”?

Can you test with rootdelay=60 just be sure? I assume this parameter is only for the root directory, but your problem has nothing to do with root directory. It happens much earlier.

Your internal nvme has more than 70 % free. Why not using a swapfile on the nvme? At least for testing purposes you could try that.

I enabled Always On USB (charge external devices during low power state) and also Charge in Battery Mode (Enable/Disable charging external devices when system is in hibernate or power-off state and in battery mode). None of them did help. I also set the rootdelay to 60, but when booting I don’t notice any delay (is it right that rootdelay holds the root mount for defined amount of seconds no matter what? It doesn’t look like pausing for 10 seconds even).

btw it is in the /proc/cmdline

BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=1927d146-91c2-46f8-a931-caa224631d43 rw nowatchdog nvme_load=YES resume=UUID=ad0a9421-0bd0-4c59-8f95-48c88bc329fa nvidia_drm.modeset=1 loglevel=3 rd.driver.pre=xhci_pci,uas,usb_storage rootdelay=60

Meanwhile I also tried to boot and hibernate repeatedly from fallback initramfs grub profiles, but I can only achieve randomly successful resume here and there.

My last suggestions would be to create a swapfile on the internal nvme and test hibernation on that swapfile. If that works you clearly have a hardware / USB issue.

I fixed the problem by appending nvidia.NVreg_PreserveVideoMemoryAllocations=0 into my cmdline, so it looks like this:

/boot/vmlinuz-linux root=UUID=1927d146-91c2-46f8-a931-caa224631d43 rw  nowatchdog nvme_load=YES resume=UUID=ad0a9421-0bd0-4c59-8f95-48c88bc329fa nvidia_drm.modeset=1 loglevel=3 rootdelay=10 nvidia.NVreg_PreserveVideoMemoryAllocations=0

I don’t know if it relates to this problem, but I have nvidia.NVreg_PreserveVideoMemoryAllocations set to 1 in /etc/default/modprobe.d/nvidia.conf. For completeness, it looks like this:

# Automatically generated by EnvyControl
options nvidia-drm modeset=1
options nvidia NVreg_UsePageAttributeTable=1 NVreg_InitializeSystemMemoryAllocations=0
options nvidia NVreg_PreserveVideoMemoryAllocations=1 # Added 2026-04-05
options nvidia NVreg_TemporaryFilePath=/var/tmp # Added 2026-06-05
options nvidia NVreg_EnableS0ixPowerManagement=1 # Added 2026-06-05

Thank you very much @mbod for trying to help me solving the problem and thanks the rest for the so very precious advice which didn’t address my issue.