Re: Re: [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump

Rafael J. Wysocki
2007-09-21T12:09:23Z

On Friday, 21 September 2007 05:33, Eric W. Biederman wrote:
> Nigel Cunningham <nigel@nigel.suspend2.net> writes:
> >
> > That's not true. Kexec will itself be an implementation, otherwise you'd end
> > up with people screaming about no hibernation support.
>
> There needs to be an implementation of hibernation based on kexec with
> return yes.
>
> > And it won't result in
> > the complete removal of the existing hibernation code from the kernel. At the
> > very least, it's going to want the kernel being hibernated to have an
> > interface by which it can find out which pages need to be saved.
>
> That interface should be running kernel -> user space -> target kernel.
> Not direct kernel to kernel.
>
> > I wouldn't
> > be surprised if it also ends up with an interface in which the kernel being
> > hibernated tells it what bdev/sectors in which to save the image as well
> > (otherwise you're going to need a dedicated, otherwise untouched partition
> > exclusively for the kexec'd kernel to use), or what network settings to use
> > if it wants to try to save the image to a network storage device.
>
> initramfs. We already seem to have that interface. And distros
> seems to do a pretty decent job of using it to configure systems.
>
> > On top of
> > that, there are all the issues related to device reinitialisation and so on,
>
> Yes.
>
> > and it looks like there's greatly increased pain for users wanting to
> > configure this new implementation.
>
> Not to be callous but that really is a user space and distro issue.
>
> > Kexec is by no means proven to be the panacea for all the issues.
>
> I agree. I'm still not quite convinced it will do a satisfactory job.
> But I think it does make sense to implement a general kexec with
> return and see if that can reasonably be used for handling hibernation
> issues. If done cleanly and with care the implementation won't be
> hibernation specific.

Yes, and that's worth doing anyway, IMO.

> Frankly this looks like the best way I can see to implement a general
> mechanism for calling silly firmware/BIOS/EFI services after we
> have a kernel up and running. It's a little bit like allowing
> X to call iopl(3) and do inb/outb directly.
>
> The configuration issues you raise pretty much exist for kexec on
> panic, and they seem to be being resolved for that case in a
> reasonable way. I do agree that the current kexec+return effort seems
> to be one of those unfortunate cases where we give every mechanism in
> the kernel to do something in user space and then no one actually
> implements the user space. That doesn't do any one any good.
>
> For hibernation we don't have the absolute need to step outside of the
> current kernel that we do in the kexec on panic approach. However we
> have this practical fight about mechanism and policy, and kexec with
> return has this seductive allure that it appears to be the minimal
> necessary mechanism in the kernel.
>
> No one has yet attacked the hard problem of coming up with separate
> hibernate methods for drivers.

Well, I've been playing a bit with that for some time, but it's not easy by any
means.

In short, I'm seeing some problems related to the handling of ACPI that seem to
shatter the entire idea of having separate hibernate methods, at least as far
as ACPI systems are concerned.

Greetings,
Rafael