Re: Hibernation Redesign

Jeremy Fitzhardinge
2007-07-10T23:00:28Z

Jeremy Maitin-Shepard wrote:
> I suppose that would be an interesting thing to look into. Another
> possible approach for having the kernel run in non-contiguous memory is
> to specify a memmap exactly to the kernel on the command-line, as I
> believe is done for the crashdump kernels currently.

That sounds very fragile. It would be better to extend the bootparams
to contain that information.

> I recall reading, though, that even with the relocatable
> kernel support, there are still significant alignment requirements for
> loading the kernel. In particular, I seem to recall that it is
> necessary to load an x86 kernel at maybe a 16MB boundary, and on other
> platforms the alignment requirements may be even more restrictive.

2MB for x86, I think. But that's not really an issue if you use a
P(seudo-physical) to M(achine) mapping, since you can choose any
arrangement you like for the kernel. The only restriction is that you
can't use large pages any more, but I don't think that's an issue for a
dump/hibernation kernel.

> In
> addition, I recall that the Linux boot procedure on x86 and on some
> other platforms necessarily uses certain low-address memory, like the
> first 640K, which must be backed up regardless.
>

Well, the traditional framebuffer/ISA space between 640k and 1M probably
needs to be identity mapped, but I don't think there's anything in there
which specifically needs to be save/restored (except framebuffer
contents, maybe?).

> For these reasons, it seems that it would be easiest to simply backup
> the first e.g. 16 or 64 MB of memory, and not have to worry about
> loading the kernel at a non-standard address and specifying a
> complicated exact memmap. Someone might prove me wrong, though.
>

Yes, I suppose. You're certain the old kernel's devices are completely
quiescent at that point?

J