On Sat, 2007-07-14 at 21:16 +0200, Rafael J. Wysocki wrote:
I think putting devices in quiescent state (not in low power state) is
sufficient for booting a new kernel with kexec, is it? According to my
experiment, the new kernel can be booted with kexec if the .suspend
method the drivers is called before kexec (given CONFIG_ACPI is not
selected).
Do we need a device quiesce/save + device shutdown for kexeced kernel to
work? I don't think so.
After some investigation, I found the usage of "nosave" is as follow on
i386:
1. __nosavedata
used only for global variable in_suspend and swsusp_pg_dir
2. PG_nosave page flags
used for snapshot itself
Both are not necessary for kexec based hibernation. Because the image
are written from a different kernel, the memory of hibernating kernel
will not be saved, they can be used freely during image writing/reading.
On x86_64, there is another usage of nosave during processing E820
memory map. But I don't know why the memory region other than E820_RAM
are marked as nosave. I think only the memory region of type E820_RAM
will be thought of normal memory, others will be thought as reserved. Is
it sufficient just to check whether the page is reserved?
Best Regards,
Huang Ying
-