You are not logged in.
Hi!!! :3
I'm still quite a newbie when it comes to Arch and Linux in general, I'm acquainted with Linux for about two years though.
Still, assume I'm 5 and don't know a thing, there's many deep concepts I'm still learning... I only know the basic surface stuff, not much about low-level concepts.
I got my laptop back in November 2025, and been using Arch ever since.
And ever since I've been trying really really hard to make hibernation work, going down a rabbit hole, checking the official documentation, checking arch forum, NVIDIA forum, reddit... I'll detail all of this below.
Suspend/sleep works.
Restart/reboot works.
Poweroff works.
Only hibernation fails.
journalctl logs seem to point at NVIDIA getting stuck before the crash... which was my main suspect. But even when booting up with it disabled I still have issues. I suspect NVIDIA could be giving problems, but doesn't look like the root cause.
Under minimal settings, resuming from hibernation still fails (see the test below).
If you are curious how the normal flow looks like on my desktop environment, when I attempt to hibernate either through the KDE Plasma UI or systemctl hibernate on the terminal, it first shuts off the screen and seems like it's working, but then the PC gets stuck and doesn't really shut off completely, the RBG lights from the keyboard stay lit... forever. So I have to hold the power button to manually force it to shut down.
This is how I get my journal logs:
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
sudo systemctl hibernate
sudo journalctl -p err --no-pager > /home/USER/Documents/text/journalctllogs.txtHere are the contents of journalctllogs.txt:
Aug 09 23:13:37 archlinux kernel:
Aug 09 23:13:44 archlinux kernel: nvidia 0000:01:00.0: PM: pci_pm_freeze(): nv_pmops_freeze [nvidia] returns -5
Aug 09 23:13:44 archlinux kernel: nvidia 0000:01:00.0: PM: dpm_run_callback(): pci_pm_freeze returns -5
Aug 09 23:13:44 archlinux kernel: nvidia 0000:01:00.0: PM: failed to quiesce async: error -5
Aug 09 23:13:44 archlinux kernel: PM: hibernation: Failed to load image, recovering.
Aug 09 23:13:48 [USER_REDACTED] kernel: ACPI BIOS Error (bug): Could not resolve symbol [^^RP28.PXSX.WIST], AE_NOT_FOUND (20250807/psargs-332)
Aug 09 23:13:48 [USER_REDACTED] kernel: ACPI Error: Aborting method \_SB.PC00.CNVW.IFUN due to previous error (AE_NOT_FOUND) (20250807/psparse-529)
Aug 09 23:13:48 [USER_REDACTED] kernel: ACPI Error: Aborting method \_SB.PC00.CNVW._DSM due to previous error (AE_NOT_FOUND) (20250807/psparse-529)
Aug 09 23:13:52 [USER_REDACTED] dbus-broker-launch[710]: Ignoring duplicate name 'org.freedesktop.Notifications' in service file '/usr/share//dbus-1/services/org.kde.plasma.Notifications.service'
Aug 09 23:13:56 [USER_REDACTED] dbus-broker-launch[775]: Ignoring duplicate name 'org.freedesktop.Notifications' in service file '/usr/share//dbus-1/services/org.kde.plasma.Notifications.service'
Aug 09 23:14:00 [USER_REDACTED] org_kde_powerdevil[1005]: [ 1005][ 1.222198] Time since library initialized: 1.222198 seconds
Aug 09 23:14:00 [USER_REDACTED] org_kde_powerdevil[1005]: [ 1005][ 1.222200] Extra delay starting dw_start_watch_displays: 0 millisec
Aug 09 23:14:01 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.
Aug 09 23:14:01 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.
Aug 09 23:14:02 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.
Aug 09 23:14:02 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.
Aug 09 23:14:03 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.
Aug 09 23:14:03 [USER_REDACTED] systemd[740]: Failed to start Swaync notification daemon.NVIDIA looks to be causing some trouble.
I was getting very hopeless as I couldn't find anything that worked for me after trying every solution I could find online. So I decided to switch approaches completely ^w^ Instead of turning things off until it worked, I would turn things on until it stopped working: build from the ground up until something fails... This way it's easier to isolate and identify the issue. Weeeeellllllll... I was not expecting it to fail at the very start, but at the same time, I think that's valuable insight. These are the steps I tried:
Reboot the PC and when the GRUB menu shows up, press 'e' on the Arch entry.
Add ' init=/bin/sh' at the end of the linux line, and boot with Ctrl + X. NOTE: as far as I understand, this only loads the Linux kernel and a shell terminal, but do let me know if there's any way to go more bare bones than this.
Prepare and mount the filesystem:
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /devActivate swap:
swapon /dev/nvme0n1p2Wait a little for the seconds to tick, and check the uptime:
cat /proc/uptimeAttempt hibernation:
echo disk > /sys/power/stateThis time the laptop does properly shut off and doesn't get stuck with the keyboard RGBs on.
Turn the laptop on again aaaand:
Verbose boot says its resuming from hibernation but then...
... it cold boots... instead of returning to the shell it cold boots normally into the desktop environment.
The uptime timer has restarted ![]()
Please correct me if I made any mistake during the process <3
MSI Cyborg 15 B2RWEKG-284XES Laptop
CPU: Intel Core 7 240H
GPU: GeForce RTX 5050 - 8GB GDDR7 VRAM
RAM: 32 GB DDR5
SSD: 1 TB
I'm aware that other Arch users have had some trouble with both MSIs and NVIDIA GPUs so I hope this can help narrow down the issue.
Currently I'm using the Linux long-term support kernel (linux-lts). The version is the one from August 8th 2026:
uname -r
6.18.43-1-ltsOh I'm also on KDE Plasma but I've been dragging these hibernation issues from the beginning, when I used Hyprland.
As you can see, there's a swap partition with 32 GB allocated to it, matching the RAM size.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 953.9G 0 disk
|-nvme0n1p1 259:1 0 512M 0 part /boot
|-nvme0n1p2 259:2 0 32G 0 part [SWAP]
|-nvme0n1p3 259:3 0 68G 0 part /
`-nvme0n1p4 259:4 0 853.4G 0 part /homeAnd this is the swap UUID, which will be referenced in the GRUB config.
lsblk -no UUID $(swapon --show=NAME --noheadings)
67432097-4eac-4c43-b0f2-420a7bb46a6cHere is my GRUB config. Some stuff to note:
I added the parameter resume=UUID= with the swap UUID above.
Zswap is disabled (zswap.enabled=0) because I was troubleshooting and heard there's some synchronization issues with hibernation. In the end it wasn't the (sole) culprit but I wanted to isolate the issue so I left it that way.
# GRUB boot loader configuration
GRUB_DEFAULT=saved # "Advanced options for Arch Linux>Arch Linux, with Linux linux"
GRUB_SAVEDEFAULT=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=67432097-4eac-4c43-b0f2-420a7bb46a6c mem_sleep_default=deep zswap.enabled=0 i915.enable_psr=0 i915.enable_dc=0"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `videoinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true
# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y
# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
#GRUB_DISABLE_OS_PROBER=falseSome stuff to note:
Added the nvidia, nvme and vmd modules.
Currently not using the resume hook because I'm using systemd, as the arch wiki suggests.
# vim:set ft=sh:
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=(nvme vmd nvidia nvidia_modeset nvidia_uvm nvidia_drm)
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No RAID, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect microcode modconf block filesystems fsck)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev microcode modconf block filesystems fsck)
#
## This setup assembles a mdadm array with an encrypted root file system.
## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
# HOOKS=(base udev microcode modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
## This setup loads an lvm2 volume group.
# HOOKS=(base udev microcode modconf block lvm2 filesystems fsck)
#
## This will create a systemd based initramfs which loads an encrypted root filesystem.
# HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr and fsck hooks.
HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()
# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"Here are the contents of these two files:
/etc/modprobe.d/nvidia.conf
options nvidia_drm modeset=1
# options nvidia NVreg_EnableGpuFirmware=0/etc/modprobe.d/nvidia-power-management.conf
options nvidia NVreg_PreserveVideoMemoryAllocations=1
# options nvidia NVreg_UseKernelSuspendNotifiers=1
options nvidia NVreg_TemporaryFilePath=/var/tmpAnd here are the services that are enabled/disabled. I tried disabling nvidia-suspend and nvidia-hibernate like some people suggested but still wouldn't work.
systemctl list-unit-files | grep nvidia
nvidia-hibernate.service enabled disabled
nvidia-persistenced.service disabled disabled
nvidia-powerd.service disabled disabled
nvidia-resume.service enabled disabled
nvidia-suspend-then-hibernate.service disabled disabled
nvidia-suspend.service enabled disabledI'm also using the nvidia-open drivers as recommended in the arch documentation. I tried using the nouveau drivers but that didn't fix the issue so I switched back.
cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 610.43.03 Release Build (root@)
GCC version: gcc version 16.1.1 20260625 (GCC)cat /etc/systemd/sleep.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file (or a copy of it placed in
# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in
# the /etc/systemd/sleep.conf.d/ directory. The latter is generally
# recommended. Defaults can be restored by simply deleting the main
# configuration file and all drop-ins located in /etc/.
#
# Use 'systemd-analyze cat-config systemd/sleep.conf' to display the full config.
#
# See systemd-sleep.conf(5) for details.
[Sleep]
#AllowSuspend=yes
#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
#SuspendState=mem standby freeze
#HibernateMode=platform shutdown
#MemorySleepMode=
HibernateDelaySec=2h
#HibernateOnACPower=yes
#SuspendEstimationSec=60mincat /etc/systemd/logind.conf | grep -i "hibernate\|suspend"
#SleepOperation=suspend-then-hibernate suspend
HandlePowerKey=hibernate
#HandleSuspendKey=suspend
#HandleSuspendKeyLongPress=hibernate
#HandleHibernateKey=hibernate
#HandleHibernateKeyLongPress=ignore
HandleLidSwitch=suspend
#HandleLidSwitchExternalPower=suspend
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=nocat /proc/acpi/wakeup
Device S-state Status Sysfs node
PEG1 S4 *enabled pci:0000:00:01.0
PEGP S4 *disabled pci:0000:01:00.0
PEG2 S4 *disabled
PEGP S4 *disabled
PEG0 S4 *disabled pci:0000:00:06.0
PEGP S4 *disabled
RP09 S4 *disabled
PXSX S4 *disabled
RP10 S4 *disabled
PXSX S4 *disabled
RP11 S4 *disabled
PXSX S4 *disabled
RP12 S4 *disabled
PXSX S4 *disabled
RP13 S4 *disabled
PXSX S4 *disabled
RP14 S4 *disabled
PXSX S4 *disabled
RP15 S4 *disabled
PXSX S4 *disabled
RP16 S4 *disabled
PXSX S4 *disabled
RP01 S4 *enabled pci:0000:00:1c.0
PXSX S4 *disabled
RP02 S4 *disabled
PXSX S4 *disabled
RP03 S4 *disabled
PXSX S4 *disabled
RP04 S4 *disabled
PXSX S4 *disabled
RP05 S4 *disabled
PXSX S4 *disabled
RP06 S4 *enabled pci:0000:00:1c.5
PXSX S4 *disabled pci:0000:03:00.0
RP07 S4 *disabled
PXSX S4 *disabled
RP08 S4 *disabled
PXSX S4 *disabled
RP17 S4 *disabled
PXSX S4 *disabled
RP18 S4 *disabled
PXSX S4 *disabled
RP19 S4 *disabled
PXSX S4 *disabled
RP20 S4 *disabled
PXSX S4 *disabled
RP21 S4 *disabled
PXSX S4 *disabled
RP22 S4 *disabled
PXSX S4 *disabled
RP23 S4 *disabled
PXSX S4 *disabled
RP24 S4 *disabled
PXSX S4 *disabled
LID0 S3 *enabled platform:PNP0C0D:00
XHCI S3 *enabled pci:0000:00:14.0
XDCI S4 *disabled
HDAS S4 *disabled pci:0000:00:1f.3
CNVW S4 *disabled pci:0000:00:14.3
TXHC S4 *enabled pci:0000:00:0d.0
TDM0 S4 *disabled
TDM1 S4 *disabled
TRP0 S4 *disabled
PXSX S4 *disabled
TRP1 S4 *disabled
PXSX S4 *disabled
TRP2 S4 *disabled
PXSX S4 *disabled
TRP3 S4 *disabled
PXSX S4 *disabled
AWAC S4 *enabled platform:ACPI000E:00
PWRB S4 *enabled platform:PNP0C0C:00cat /sys/power/state
freeze mem diskDisabled Zswap.
Updated the BIOS to its latest version (E15Q3IMS.110) from here.
Updated the Linux kernel, tried both the mainline and the long-term support kernels... right now I'm using the LTS kernel.
Tried the nouveau NVIDIA drivers.
Tried both with and without the resume hook.
Disabled NVIDIA hibernate and suspend services.
Tried different configurations for NVIDIA (see the commented lines of the files above).
Contacted MSI Tech Support but they only offer support for Windows (although the OS that came with this PC was FreeDOS... huh O~o)
Here is a collection of some posts, forums, documentation, etc. that I have checked and tried. I couldn't find every single post that I checked because it's been a few months and I didn't note them down, as they didn't fix my issue... apologies for that OwO
I know the Arch community greatly values trying to fix things on your own and reading the docs, and I swear I did but after so many months empty handed I figured it was a good time to ask for help.
If I'm doing anything wrong, like posting this on the wrong place, or breaking any rule by accident, do tell me >w<
Also ask for any information you need! I tried to be exhaustive and provide as much as I could find, I also hope the formatting is nice to read. But if you need any extra info I'll provide it.
I guess that is all, thank you so so so much for reading! <33
Last edited by limbo_owo (2026-08-17 08:22:39)
Offline
Here are the contents of journalctllogs.txt:
This looks like journal of boot with attempt to resume. What is in journal of boot with attempt to hibernate?
Please, post all journal messages for both boots, do not restrict to errors only. Surrounding non-error messages also matter.
# journalctl -b -1
# journalctl -b 0As you can see, there's a swap partition with 32 GB allocated to it, matching the RAM size.
I would recommend swap at least 1.5 times larger than RAM.
Some time ago I experienced failures of resume from hibernation (also on PC with Nvidia card) with 128 GiB RAM and 64 GiB swap, despite used RAM was less than 1 GiB. The root cause of that falures is still unknown, I fixed it by allocating larger swap on other drive.
Added the nvidia, nvme and vmd modules.
Did you try to exclude nvidia modules from initramfs?
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
Did you try without these options?
EDIT: if I remember correctly, each "options" line overrides previous, so only last one is applied. Put all desired options into single "options" line.
I tried using the nouveau drivers but that didn't fix the issue so I switched back.
So maybe the culprit is not nvidia.
For sanity, please also show
# cat /sys/power/image_size
# cat /sys/power/reserved_sizeLast edited by dimich (2026-08-10 03:05:24)
Offline
Hello!! Thank you so much for this feedback!!! I tried some of the stuff you recommended and actually managed to hibernate twice... (although it got stuck when powering off and I had to hold the power button). Unfortunately, I tried to check if systemctl hybrid-sleep worked and it did not, but not only that, now normal hibernate doesn't either, even after rebooting.
I'm still trying to figure out how to replicate it and find the exact journalctl logs corresponding to it. But at least this should serve as confirmation that 32GB is enough space to save the data and resume it.
In the meantime, I wanted to kindly thank you for your thorough reply, it's been really helpful! <3
Offline
YIPPEEEEEEEEEEE!!!!!!!!!! It's finally fixed >W< I'll walk you through the steps I followed to make it work:
Disabled VMD (Volume Management Device) on the BIOS/UEFI.
.
Removed the "vmd" module from mkinitcpio.conf. It should look like this:
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)DO NOT remove the NVIDIA modules as the system won't start otherwise.
.
⚠️ IMPORTANT: set PreserveVideoMemoryAllocations to 0. Many fixes I checked said to set it to 1, but setting it to 0 is what finally made my laptop able to resume correctly.
Here is my full config if you need it:
cat /etc/modprobe.d/nvidia.conf
options nvidia_drm modeset=1
options nvidia NVreg_EnableGpuFirmware=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
options nvidia NVreg_PreserveVideoMemoryAllocations=0
options nvidia NVreg_UseKernelSuspendNotifiers=1.
⚠️ IMPORTANT: Enable nvidia-persistenced.service. While the previous step was enough to resume correctly, my laptop would get stuck during poweroff, forcing me to hold the power button to manually shut it down. Enabling this service fixes that. Now hibernation and resuming should be fully working!!! Remember to also enable hibernate, resume and suspend as well:
sudo systemctl enable --now nvidia-hibernate.service nvidia-persistenced.service nvidia-resume.service nvidia-suspend.serviceNote: nvidia-persistenced.service may show as failed (systemctl status nvidia-persistenced.service), but it still fixes the poweroff issue regardless. Don't be alarmed if that's the case.
.
Extra: as the Hyperland Wiki explains, if you still have issues try removing the KMS hook from mkinitcpio.conf.
Loading the Nvidia modules early may cause resuming from hibernation to not work anymore (i.e. the system will just boot instead of resuming). If you have issues with that, try disabling early KMS.
Once finished, make sure to run this to apply changes <3
sudo mkinitcpio -P
rebootThis is what worked for me! I hope it works for you too ^w^ cheers! ❤️
Last edited by limbo_owo (2026-08-17 08:31:40)
Offline