| We've tried to shutdown and resume the domU kernel based on the code from xen-tools and reboot.c.The DomU has been suspended and got the status "s" in xm list, but we can't resume it. Who can tell us how the HYPERVISOR_suspend and its parameter "srec" works on the suspend/shutdown procedure?
 
 The code list here:
 
 file:  linux-ppc-2.6.hg/drivers/xen/core/reboot.c
 static int __do_suspend(void *ignore)
 {
 .....
 /*
 * We'll stop somewhere inside this hypercall. When it returns,
 * we'll start resuming after the restore.
 */
 // HYPERVISOR_suspend(virt_to_mfn(xen_start_info));
 ------------------------------>// We don't know what's this parameter for, so comment it out in the routine calls.
 printk("HYPERVISOR_shutdown(SHUTDOWN_suspend)\n");
 HYPERVISOR_shutdown(SHUTDOWN_suspend);
 --------------------------------> Here the kernel suspended.
 printk("SUSPEND!!?? restoring...\n");
 shutting_down = SHUTDOWN_INVALID;
 //      set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info);
 //      HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
 --------------------------------> Here to resume the kernel.
 memset(empty_zero_page, 0, PAGE_SIZE);
 gnttab_resume();
 irq_resume();
 //      time_resume();
 //      switch_idle_mm();
 //      __sti();
 xencons_resume();
 xenbus_resume();
 smp_resume();
 return err;
 }
 
 file:  xenppc-unstable.hg/tools/libxc/powerpc64/xc_ppc_linux_save.c
 int
 xc_linux_save(int xc_handle, int io_fd, uint32_t dom, uint32_t max_iters,
 uint32_t max_factor, uint32_t flags, int (*suspend)(int))
 {
 .......
 
 /* This is a non-live suspend. Issue the call back to get the
 domain suspended */
 ---------------------------------------> call the suspend routine to halt the domU kernel.
 if (suspend_and_state(suspend, xc_handle, io_fd, dom, &info)) {
 ERR("Domain appears not to have suspended");
 goto out;
 }
 
 ........
 ---------------------------------------> Here we expect to begin the resume procedure.
 fprintf (stderr, "All memory is saved\n");
 /* Success! */
 rc = 0;
 
 
 DPRINTF("Domain ready to be built.\n");
 
 domctl.cmd = XEN_DOMCTL_setvcpucontext;
 domctl.domain = (domid_t)dom;
 domctl.u.vcpucontext.vcpu   = 0;
 set_xen_guest_handle(domctl.u.vcpucontext.ctxt, &ctxt);
 rc = xc_domctl(xc_handle, &domctl);
 
 if (rc != 0) {
 ERR("Couldn't build the domain");
 goto out;
 }
 
 rc = 1;
 
 
 out:
 ......
 }
 
 Best Regards,
 Yi  Ge, PhD
 IBM China Research Lab
 Tel: (86-10) 58748024
 Fax: (86-10) 58748230
 E-Mail : geyi@xxxxxxxxxx
 Notes Mail: Yi Ge/China/IBM@IBMCN
 
 Building 19 Zhongguancun Software Park,
 8 Dongbeiwang WestRoad, Haidian District,
 Beijing,P.R.C.100094
 
 
 
 _______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel |