On Fri, 28 Oct 2011, John Baboval wrote: > Call xc_domain_shutdown with the reboot flag when the guest requests a > reboot.
Thanks for the patch! Sorry for the delay in replaying but away for XenSummit Asia. > Signed-off-by: John V. Baboval <john.babo...@virtualcomputer.com> > Signed-off-by: Tom Goetz <tom.go...@virtualcomputer.com> > --- > xen-all.c | 22 ++++++++++++++++++++++ > 1 files changed, 22 insertions(+), 0 deletions(-) > > diff --git a/xen-all.c b/xen-all.c > index b5e28ab..cd71b24 100644 > --- a/xen-all.c > +++ b/xen-all.c > @@ -742,6 +742,7 @@ static void cpu_handle_ioreq(void *opaque) > } > if (qemu_reset_requested_get()) { > qemu_system_reset(VMRESET_REPORT); > + reboot_hvm_domain(); > } > } > @@ -979,3 +980,24 @@ void destroy_hvm_domain(void) > xc_interface_close(xc_handle); > } > } > + > +void reboot_hvm_domain(void) > +{ > + XenXC xc_handle; > + int sts; > + > + xc_handle = xen_xc_interface_open(0, 0, 0); > + if (xc_handle == XC_HANDLER_INITIAL_VALUE) { > + fprintf(stderr, "Cannot acquire xenctrl handle\n"); > + } else { > + sts = xc_domain_shutdown(xc_handle, xen_domid, SHUTDOWN_reboot); > + if (sts != 0) { > + fprintf(stderr, "? xc_domain_shutdown failed to issue reboot, " > + "sts %d, %s\n", sts, strerror(errno)); > + } else { > + fprintf(stderr, "Issued domain %d reboot\n", xen_domid); > + } > + xc_interface_close(xc_handle); > + } > +} I think that what you are doing is correct but I couldn't help but notice that reboot_hvm_domain is very similar to destroy_hvm_domain. I would rather unify the two functions and have a single shutdown_domain function with two arguments: a reboot/destroy argument and xc_handle (we don't need to open a new one, we can reuse state->xce_handle). Are you OK with submitting a new version of this patch with these changes?