Re: [PATCH -mm] kexec jump -v9
- From: "Huang, Ying" <ying.huang@xxxxxxxxx>
- Date: Thu, 15 May 2008 09:42:19 +0800
On Wed, 2008-05-14 at 15:30 -0700, Eric W. Biederman wrote:
[...]
+ if (image->preserve_context) {
+ KJUMP_MAGIC(control_page) = KJUMP_MAGIC_NUMBER;
+ if (kexec_jump_save_cpu(control_page)) {
+ image->start = KJUMP_ENTRY(control_page);
+ return;
Tricky, and I expect unnecessary.
We should be able to just have relocate_new_kernel return?
OK, I will check this. Maybe we can move CPU state saving code into
relocate_new_kernel.
[...]
-static void kernel_kexec(void)
+static int kernel_kexec(void)
{
+ int ret = -ENOSYS;
#ifdef CONFIG_KEXEC
- struct kimage *image;
- image = xchg(&kexec_image, NULL);
- if (!image)
- return;
- kernel_restart_prepare(NULL);
- printk(KERN_EMERG "Starting new kernel\n");
- machine_shutdown();
- machine_kexec(image);
+ if (xchg(&kexec_lock, 1))
+ return -EBUSY;
+ if (!kexec_image) {
+ ret = -EINVAL;
+ goto unlock;
+ }
+ if (!kexec_image->preserve_context) {
+ kernel_restart_prepare(NULL);
+ printk(KERN_EMERG "Starting new kernel\n");
+ machine_shutdown();
+ }
+ ret = kexec_jump(kexec_image);
+unlock:
+ xchg(&kexec_lock, 0);
#endif
Ugh. No. Not sharing the shutdown methods with reboot and
the normal kexec path looks like a recipe for failure to me.
This looks like where we really need to have the conversation.
What methods do we use to shutdown the system.
My take on the situation is this. For proper handling we
need driver device_detach and device_reattach methods.
With the following semantics. The device_detach methods
will disable DMA and place the hardware in a sane state
from which the device driver can reclaim and reinitialize it,
but the hardware will not be touched.
device_reattach reattaches the driver to the hardware.
Yes. Current device PM callback is not suitable for hibernation (kexec
based or original). I think we can collaborate with Rafael J. Wysocki on
the new device drivers hibernation callbacks.
So looking at this patch I see two very productive directions
we can go.
1) A patch that just fixes up the kexec infrastructure code
so it implements the swap page and provides the kernel
reentry point. And doesn't handle the upper layer
user interface portion.
2) A patch that renames device_shutdown to device_detach.
And starts implementing the driver hooks needed from
a resumable kexec.
OK. I can separate the patch into two patches.
Best Regards,
Huang Ying
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [PATCH -mm] kexec jump -v9
- From: Rafael J. Wysocki
- Re: [PATCH -mm] kexec jump -v9
- References:
- Re: [PATCH -mm] kexec jump -v9
- From: Eric W. Biederman
- Re: [PATCH -mm] kexec jump -v9
- Prev by Date: Re: [PATCH 2/3] sysfs: remove error messages for -EEXIST case
- Next by Date: [PATCH 0/4] Create a CFLAGS_REMOVE for ftrace
- Previous by thread: Re: [linux-pm] [PATCH -mm] kexec jump -v9
- Next by thread: Re: [PATCH -mm] kexec jump -v9
- Index(es):
Relevant Pages
|