From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:48397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJsFy-0006Vn-8r for qemu-devel@nongnu.org; Fri, 28 Oct 2011 15:38:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJsFx-00033w-27 for qemu-devel@nongnu.org; Fri, 28 Oct 2011 15:38:22 -0400 Received: from server514d.exghost.com ([72.32.253.69]:2238 helo=server514.appriver.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJsFw-00033p-Qe for qemu-devel@nongnu.org; Fri, 28 Oct 2011 15:38:20 -0400 Received: from [72.32.253.65] (HELO FE03.exg4.exghost.com) by server514.appriver.com (CommuniGate Pro SMTP 5.4.1) with ESMTP id 182779469 for qemu-devel@nongnu.org; Fri, 28 Oct 2011 14:38:19 -0500 Message-ID: <4EAB04A9.9080509@virtualcomputer.com> Date: Fri, 28 Oct 2011 15:38:17 -0400 From: John Baboval MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 1/3] Support guest reboots when in Xen HVM mode List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Call xc_domain_shutdown with the reboot flag when the guest requests a reboot. Signed-off-by: John V. Baboval Signed-off-by: Tom Goetz --- 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); + } +} + -- 1.7.4.1