[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <46F39345.3040201@kolumbus.fi>
Date: Fri, 21 Sep 2007 12:47:49 +0300
From: Mika Penttilä <mika.penttila@...umbus.fi>
To: "Huang, Ying" <ying.huang@...el.com>
CC: "Eric W. Biederman" <ebiederm@...ssion.com>,
Pavel Machek <pavel@....cz>, nigel@...el.suspend2.net,
Andrew Morton <akpm@...ux-foundation.org>,
Jeremy Maitin-Shepard <jbms@....edu>,
linux-pm@...ts.linux-foundation.org,
Kexec Mailing List <kexec@...ts.infradead.org>,
linux-kernel@...r.kernel.org
Subject: Re: [linux-pm] [RFC][PATCH 0/2 -mm] kexec based hibernation -v3
> 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.
> 9. Shutdown or reboot in hibernating kernel (kernel B).
>
> 10. Boot kernel (kernel C) compiled for hibernating/restore usage on
> the root file system /dev/hdb in memory range of kernel B.
>
> For example, the following kernel command line parameters can be
> used:
>
> root=/dev/hdb single memmap=exactmap memmap=640K@0K memmap=15M@1M
>
0-640K from kernel A overrides 0-640K of kernel C at restore time.
> 11. In restore kernel (kernel C), the memory image of kernel A can be
> restored as follow:
>
> cp kexec_jump_back_entry /sys/kernel/kexec_jump_back_entry
> krestore vmcore
>
>
This steps replaces kernel C's pages with kernel B's (at least 15m-16m),
saved at step 8, so these kernels should be equal? Or they must be
physically located in non-overlapping regions such that C is in B's
memory range but non-overlapping. The proposed setup doesn't guaratee
this afaics.
> 12. Jump back to hibernated kernel (kernel A)
>
> kexec -b
>
> Best Regards,
> Huang Ying
> _______________________________________________
> linux-pm mailing list
> linux-pm@...ts.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/linux-pm
>
>
--Mika
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists