Dear Tobias, I hopefully found a way to reply to your message directly. I've checked resume with your patch -- actually a slightly reworked version of it; a few remarks: - I've amended it as per Danny's suggestions regarding documentation location - I've adjusted it to take the guixy --resume and --noresume options rather than the kernel norm resume and noresume. In particular this allows me to test the 'kernel' resume path and the 'initrd' resume path with the same os definition quickly, only adjusting the GRUB cmdline within GRUB. - I find the added copyright years on top strange -- shouldn't it be 2020 ? The results of my tests are attached as a separate file. In a nutshell: - I can confirm that on my kernel (default guix linux-libre-5.4) the resume= option by itself does not resume at all. This seems to have been reported already: https://lists.gnu.org/archive/html/bug-guix/2016-11/msg00060.html - resume-by-uuid from userspace does not work - resume-by-label from userspace does not work either (as much as I'd like them to). (please note that, on top of this, I found no way to specify the swap devices in the os definition by UUID or LABEL either -- so the limitation does not bother me in the current state). Each time these loop for 20 seconds, waiting for the partition to appear (the partition is there, from dmesg, but somehow is not in the database looked for in (canonicalize-device-spec spec) -- weird). Regarding the interface, I'm not sure we should feel bound by the argument naming convention of the kernel for resume handling from userspace -- we could leave its own namespace for the kernel to handle, for those kernels that can, and separate the resume handling as done by initrd in a separate, more guixy namespace. Actually I don't really understand why we would want overlapping of names for two different codepaths; I think separating the names brings more flexibility (you can control from the GRUB commandline which resume path you want to take) and less confusion (it is clearer from the commandline where the resuming will/should be handled). To summarize: * I still think that this feature is greatly needed: we can hibernate with the current software stack, but the default kernel won't resume, leaving the system in a bad state (swap is not activated by shepherd, see logs), and we need manual swapon to leave this bad state; * This version of the patch looks like it can handle UUID and LABEL, while it can't -- for reasons that i've not dug; * Meanwhile I find resume-by-uuid or resume-by-label currently pointless, given the limited ways we have to specify swap devices in the OS definition file. I'd be in favor of doing the following: * Dropping support for UUID and LABEL in the code *OR* signalling clearly in some comment that the path is currently non-functional; * Including the patch ASAP to avoid the really bad state we're in currently after a suspend. * Using the guixy --resume and --noresume options rather than the kernel ones Please let me know how to proceed, and let me know how to handle the copyright notice. Kind regards, Jean-Baptiste