Hibernation resume not working

Hi,
I installed Suse Leap from Suse Studio, with EFI enabled.

systemctl hibernate

works, but it does not resume.

I’ve added

initcall_debug

as kernel param, and see this in logs:

    2.775479] PM: Hibernation image not present or could not be loaded.
    2.775512] initcall software_resume+0x0/0x380 returned -19 after 288804 usecs

After some searching:
http://lxr.free-electrons.com/source/kernel/power/hibernate.c

swsusp_resume_device = name_to_dev_t(resume_file);
if (!swsusp_resume_device) {
    error = -ENODEV;
    goto Unlock;
}

So name_to_dev_t is failing. I have no idea why. I’ve tried to use disk UUID in resume param, no luck.

I’ve tested fresh Ubuntu 14.04(pm-hibernate) and Ubuntu 15.10(systemctl hibernate) - both works fine.

My kernel params line:

GRUB_CMDLINE_LINUX_DEFAULT=" root=/dev/disk/by-id/ata-32GB_NANDrive_00000000001R1TDBL3Oa-part3 disk=/dev/disk/by-id/ata-32GB_NANDrive_00000000001R1TDBL3Oa resume=/dev/disk/by-id/ata-32GB_NANDrive_00000000001R1TDBL3Oa-part4 quiet initcall_debug"

Swap is 4GB, Ram 2GB.

I’ve tried to use hibernate to file approach with the same result.

What video card and driver?

kernel has no idea about /dev/disk/by-* names so first in-kernel attempt always fails. Later initrd resolves this name and attempts (should attempt) resume once more.

From your description it is not clear what happens. System attempts to resume but this attempt fails? Or system does not even attempt to resume and boots straight into openSUSE?

Thank you for replies.

This is Intel Atom E3827 with integrated graphics, I selected xf86-video-intel package.

Thank you, I was focused on this false negative message.

Looking at display, resuming after hibernation looks like straight boot to openSUSE with console login prompt. I only saw resume attempt in journalctl | grep PM

linux kernel: PM: Checking hibernation image partition /dev/disk/by-id/ata-32GB_NANDrive_00000000001R1TDBL3Oa-part4
linux kernel: PM: Hibernation image not present or could not be loaded.

Complete journal: SUSE Paste

I don’t see second attempt to resume in this journal. Should some resume hook be present in initrd? (like in Arch Wiki?) I’m not familiar with dracut.

Yes, of course. It should interpret resume= kernel line parameter.

Could you remove “quiet initcall_debug”, add systemd.log_level=debug and upload “journalctl -b” again? This could provide more details.

Sure :slight_smile: “journalctl -b” with kernel params changed:
https://dl.dropboxusercontent.com/u/4989240/journal.txt

Yes, it does not look like it event attempts to resume. For comparison, here is what I get on pretty much vanilla Leao 42.1 with current patches.

Feb 15 19:49:34 linux-gtrk systemd[1]: Started dracut pre-mount hook.
Feb 15 19:49:34 linux-gtrk kernel: PM: Starting manual resume from disk
Feb 15 19:49:34 linux-gtrk kernel: PM: Hibernation image partition 254:2 present
Feb 15 19:49:34 linux-gtrk kernel: PM: Looking for hibernation image.
Feb 15 19:49:34 linux-gtrk kernel: PM: Image not found (code -22)
Feb 15 19:49:34 linux-gtrk kernel: PM: Hibernation image not present or could no
10:~ # cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.1.15-8-default root=UUID=d28ad59e-f049-4b87-b218-3e8c56fa2620 resume=/dev/disk/by-uuid/e0426233-b37d-4b17-8646-367849f53dde splash=silent systemd.log_level=debug

What lsinitrd says? At the very beginning it lists dracut modules included. Is `resume’ present?

No, there is no ‘resume’. So this must be the reason.
lsinitrd:


Version: dracut-037-68.1


Arguments: -H -f


dracut modules:
bash
i18n
ifcfg
kernel-modules
rootfs-block
terminfo
udev-rules
systemd
usrmount
base
fs-lib
shutdown
suse
========================================================================

Thank you all for help, I had to create */etc/dracut.conf.d/95-user-level-resume.conf
*with

echo 'add_dracutmodules+=" resume"'

and then run:

dracut --force

// Code taken from: https://lists.opensuse.org/opensuse-factory/2015-06/msg00248.html

Hibernation to disk works now fine :slight_smile:

I don’t know why SUSE Studio added ‘resume’ to grub, but not to dracut. Should this be reported as bug?