On Tue, Oct 02, 2018 at 12:16:02PM -0400, Bastien Nocera wrote:
----- Original Message -----
On Di, 02.10.18 10:16, Bastien Nocera (bnocera@redhat.com) wrote:
Until the kernel can use a dedicated partition for hibernation, which would fix the majority of problems users can encounter, we're just offering more sharp edges with which to cut themselves.
As I understand the problems have more to do with hardware combinations, and driver code not getting things right, the actual serialization of stuff is fine and unproblematic...
This is mixing two things — userspace configuration and autodetection, and kernel driver issues. The first is an easy problem (relatively), the second is much harder.
Specifically:
There's problems with:
- not having enough swap space available at a particular instant
as you know, systemd looks at the current memory usage, and does not advertise hibernation when not enough memory. So users might be unhappy that hibernation sometimes stops being available, but otherwise this is not a problem.
There's some heuristics here. I haven't seen reports where hibernation would fail because systemd misdetected the amount of memory, but if you see this, please report, and we'll try to adjust.
- swap being encrypted and not allowing restore because the keys aren't there anymore
This particular case is not detected, but we certainly should do this. I'll put it on the todo list.
- swap not being encrypted, which could leak information down the line
But that case also affect normal usage: if I have physical access to the machine, I can just press reset, and after reboot extract anything from swap. Hibernation doesn't change much here.
- resume= not being there in the default parameters, so dracut needing to rewrite the initrd before hibernation is considered done (?)
This is also solvable. Pull request [1] is upstream to check for resume= presence, and I plan to backport this to F29.
[1] https://github.com/systemd/systemd/pull/10262
If the drivers being broken were the only problem, then reporting bugs upstream for those drivers would help, just in the same way it helped for suspend 10 years ago.
In my experience, the problem isn't so much with specific drivers, and more with the whole infrastructure, whether in the kernel, user-space, or a combination of both.
Yes, hibernation gets a lot of flak for non-kernel issues, like those listed above. But those we can actually fix relatively easy.
Zbyszek