[linux-pm] [RFC][PATCH 0/2 -mm] kexec based hibernation -v3
huang ying
huang.ying.caritas at gmail.com
Fri Sep 21 11:41:13 EDT 2007
On 9/21/07, Mika Penttilä <mika.penttila at kolumbus.fi> wrote:
> huang ying wrote:
> > On 9/21/07, Mika Penttilä <mika.penttila at kolumbus.fi> wrote:
> >
> >> huang ying wrote:
> >>
> >>> On 9/21/07, Mika Penttilä <mika.penttila at kolumbus.fi> wrote:
> >>>
> >>>
> >>>>> Usage:
> >>>>>
> >>>>> 1. Compile kernel with following options selected:
> >>>>>
> >>>>> CONFIG_X86_32=y
> >>>>> CONFIG_RELOCATABLE=y # not needed strictly, but it is more convenient with it
> >>>>> CONFIG_KEXEC=y
> >>>>> CONFIG_CRASH_DUMP=y # only needed by kexeced kernel to save/restore memory image
> >>>>> CONFIG_PM=y
> >>>>> CONFIG_KEXEC_JUMP=y
> >>>>>
> >>>>> 2. Download the kexec-tools-testing git tree, apply the kexec-tools
> >>>>> kjump patches (or download the source tar ball directly) and
> >>>>> compile.
> >>>>>
> >>>>> 3. Download and compile the krestore tool.
> >>>>>
> >>>>> 4. Prepare 2 root partition used by kernel A and kernel B/C, referred
> >>>>> as /dev/hda, /dev/hdb in following text. This is not strictly
> >>>>> necessary, I use this scheme for testing during development.
> >>>>>
> >>>>> 5. Boot kernel compiled for normal usage (kernal A).
> >>>>>
> >>>>> 6. Load kernel compiled for hibernating/restore usage (kernel B) with
> >>>>> kexec, the same kernel as that of 5 can be used if
> >>>>> CONFIG_RELOCATABLE=y and CONFIG_CRASH_DUMP=y are selected.
> >>>>>
> >>>>> The --elf64-core-headers should be specified in command line of
> >>>>> kexec, because only the 64bit ELF is supported by krestore tool.
> >>>>>
> >>>>> For example, the shell command line can be as follow:
> >>>>>
> >>>>> kexec -p -n /boot/bzImage --mem-min=0x100000 --mem-max=0xffffff
> >>>>> --elf64-core-headers --append="root=/dev/hdb single"
> >>>>>
> >>>>> 7. Jump to the hibernating kernel (kernel B) with following shell
> >>>>> command line:
> >>>>>
> >>>>> kexec -j
> >>>>>
> >>>>> 8. In the hibernating kernel (kernel B), the memory image of
> >>>>> hibernated kernel (kernel A) can be saved as follow:
> >>>>>
> >>>>> cp /proc/vmcore .
> >>>>> cp /sys/kernel/kexec_jump_back_entry .
> >>>>>
> >>>>>
> >>>>>
> >>>> Here we save also kernel B's pages.
> >>>>
> >>>>
> >>> No, the kernel B's pages will not be saved. Because when we build the
> >>> elfcore (/proc/vmcore) header, we exclude memory area used by kernel
> >>> B. The details can be found in kexec-tools patches.
> >>>
> >>>
> >>>
> >> Ok I see. But should the kernel B's e820 mem map be limited to 1m-16m in
> >> order not to allocate pages found also in A's space? Or does does the
> >> --mem-min and --mem-max do that also?
> >>
> >
> > That is what "memmap=exactmap memmap=640K at 0K memmap=15M at 1M" for. The
> > contents of e820 memmap will be overrided when these kernel parameters
> > are specified.
> >
> > Best Regards,
> > Huang Ying
> >
> Yes, you just didn't specify exactmap for kernel B in your instructions,
> but only for C. But it is also required for kernel B then?
>
They are specified for kernel B by /sbin/kexec automatically.
Best Regards,
Huang Ying
More information about the kexec
mailing list