WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] Play with spice for xen-upstream-qemu on upstrea

To: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Play with spice for xen-upstream-qemu on upstream Xen
From: ZhouPeng <zpengxen@xxxxxxxxx>
Date: Tue, 24 May 2011 11:29:11 +0800
Cc: "Xen-Devel \(E-mail\)" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Delivery-date: Mon, 23 May 2011 20:30:12 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=LqlwKgL0Xd1IP/unkYGli5jOlwD6jyPRNK8xaD4d4e8=; b=k/YBmQAD498VPjZih53g2c7rBlwMVZBPmS76ZXC8g7H6hqLokwijM3ONd19ylAihGZ o1FvtUhEXOtMLK8q45gFbCV67mpiV/9a9t6VVDBuI9p+0cI2pxuCWSD736owDK/O+8mc Y3F6XfVaB+BeSEDja9/Otf/SVwtz4jKT8Ic7U=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=rimMGMXrytUgNVhP1h9v4I8Vnyp87jGQkFlCU4mVoQSgqWNArAmrKebk3Unc8LXVQm 9U0LkNi5KtC0zCvEdht4seC90Vv8MhRcJLpZLrs5OXvDQkdIT6ne7/SUAVs81U6xBHu2 dnOrIlF59MHbjybqfHG6/GcwqY0wjlFXVEDVI=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <BANLkTi=Dg_QQsa1b4Pin3RxYmoF=nFyk6A@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <BANLkTi=9OBXN0fMaPEvrEityAqM-L6yPBQ@xxxxxxxxxxxxxx> <19884.26020.847575.426352@xxxxxxxxxxxxxxxxxxxxxxxx> <BANLkTik5EKzCwFdV1D5w9wt1Gu6XZ4N4MA@xxxxxxxxxxxxxx> <19926.34224.455450.51781@xxxxxxxxxxxxxxxxxxxxxxxx> <BANLkTi=Dg_QQsa1b4Pin3RxYmoF=nFyk6A@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
2011/5/23 ZhouPeng <zpengxen@xxxxxxxxx>:
>> Can you please not put unrelated changes in patches ?  If you resend
>> it with only the spice parts (that Stefano has acked) I will apply it.
>
Resend the patch again with 3 fixes:

1)  Change   'if (!info->spicehost)' to  'if (info->spicehost)' ,
sorry for my carelessness
2)  In the new spice, the spice option of spiced qemu is "addr=
hostaddr " not "host=hostaddr",
      according to the new qemu's file qemu-options.hx
3)  Delete 'printf("SPICE Options:\n  -spice %s\n", spiceoptions);' ,
which is not necessary.


Testing this patch on xen-unstable, I think there is no problem now.

Thanks

----------------
Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx>
Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

This patch allows you to use spice for
xen-upstream-qemu on upstream Xen or released Xen-4.1.0.

Nothing need to be modified in xen-upstream-qemu,
because qemu has include spice's code as a new feature since qemu-0.14.

= Usage =

Add spice fields in VM cfg file.

e.g.

spice=1
spiceport=6000
spicehost='192.168.1.187'
spicedisable_ticketing = 0 # default is 0
spicepasswd = 'password'
spiceagent_mouse = 1 # default is 1
------------------------------------------------------------------------------

diff -r fb517cc27ade -r 0e67672ea59e tools/libxl/libxl.idl
--- a/tools/libxl/libxl.idl     Fri May 20 18:20:09 2011 +0100
+++ b/tools/libxl/libxl.idl     Tue May 24 10:45:17 2011 +0800
@@ -210,6 +210,13 @@ libxl_device_model_info = Struct("device
     ("keymap",           string,            False, "set keyboard
layout, default is en-us keyboard"),
     ("sdl",              bool,              False, "sdl enabled or disabled"),
     ("opengl",           bool,              False, "opengl enabled or
disabled (if enabled requires sdl enabled)"),
+    ("spice",            bool,              False, "spice enabled or
disabled"),
+    ("spiceport",        integer,           False, "the port that
should be listened on for the spice server"),
+    ("spicetls_port",    integer,           False, "the tls port that
should be listened on for the spice server, at least one of the port
or tls port must be given"),
+    ("spicehost",        string,            False, "the interface
that should be listened on if given otherwise any interface"),
+    ("spicedisable_ticketing", bool,        False, "Enable client
connection with no password"),
+    ("spicepasswd",      string,            False, "set ticket
password, witch must be used by a client for connection. The passwords
never expires"),
+    ("spiceagent_mouse", bool,              False, "Whether spice
agent is used for client mouse mode(default is on)"),
     ("nographic",        bool,              False, "no graphics, use
serial port"),
     ("gfx_passthru",     bool,              False, "graphics
passthrough enabled or disabled"),
     ("serial",           string,            False, "serial port
re-direct to pty deivce"),
diff -r fb517cc27ade -r 0e67672ea59e tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c    Fri May 20 18:20:09 2011 +0100
+++ b/tools/libxl/libxl_dm.c    Tue May 24 10:45:17 2011 +0800
@@ -281,6 +281,41 @@ static char ** libxl__build_device_model
     }
     if (info->sdl) {
         flexarray_append(dm_args, "-sdl");
+    }
+    if (info->spice) {
+        char *spiceoptions = NULL;
+        if (!info->spiceport && !info->spicetls_port) {
+            LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
+                       ": at least one of the spiceport or tls_port
must be provided");
+            return NULL;
+        }
+
+        if (!info->spicedisable_ticketing) {
+            if (!info->spicepasswd) {
+                LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
+                           ": spice ticketing is enabled but missing
password");
+                return NULL;
+            }
+            else if (!info->spicepasswd[0]) {
+                LIBXL__LOG(ctx, LIBXL__LOG_ERROR, ": spice password
can't be empty");
+                return NULL;
+            }
+        }
+        spiceoptions = libxl__sprintf(gc, "port=%d,tls-port=%d",
+                       info->spiceport, info->spicetls_port);
+        if (info->spicehost)
+            spiceoptions = libxl__sprintf(gc,
+                    "%s,addr=%s", spiceoptions, info->spicehost);
+        if (info->spicedisable_ticketing)
+            spiceoptions = libxl__sprintf(gc, "%s,disable-ticketing",
spiceoptions);
+        else
+            spiceoptions = libxl__sprintf(gc,
+                    "%s,password=%s", spiceoptions, info->spicepasswd);
+        spiceoptions = libxl__sprintf(gc, "%s,agent-mouse=%s", spiceoptions,
+                                      info->spiceagent_mouse ? "on" : "off");
+
+        flexarray_append(dm_args, "-spice");
+        flexarray_append(dm_args, spiceoptions);
     }

     if (info->type == LIBXL_DOMAIN_TYPE_PV && !info->nographic) {
diff -r fb517cc27ade -r 0e67672ea59e tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Fri May 20 18:20:09 2011 +0100
+++ b/tools/libxl/xl_cmdimpl.c  Tue May 24 10:45:17 2011 +0800
@@ -367,6 +367,12 @@ static void printf_info(int domid,
         printf("\t\t\t(usb %d)\n", dm_info->usb);
         printf("\t\t\t(usbdevice %s)\n", dm_info->usbdevice);
         printf("\t\t\t(acpi %d)\n", dm_info->acpi);
+        printf("\t\t\t(spice %d)\n", dm_info->spice);
+        printf("\t\t\t(spiceport %d)\n", dm_info->spiceport);
+        printf("\t\t\t(spicetls_port %d)\n", dm_info->spicetls_port);
+        printf("\t\t\t(spicehost %s)\n", dm_info->spicehost);
+        printf("\t\t\t(spicedisable_ticketing %d)\n",
dm_info->spicedisable_ticketing);
+        printf("\t\t\t(spiceagent_mouse %d)\n", dm_info->spiceagent_mouse);
         printf("\t\t)\n");
     } else {
         printf("\t\t(linux %d)\n", b_info->hvm);
@@ -1124,6 +1130,20 @@ skip_vfb:
             dm_info->sdl = l;
         if (!xlu_cfg_get_long (config, "opengl", &l))
             dm_info->opengl = l;
+        if (!xlu_cfg_get_long (config, "spice", &l))
+            dm_info->spice = l;
+        if (!xlu_cfg_get_long (config, "spiceport", &l))
+            dm_info->spiceport = l;
+        if (!xlu_cfg_get_long (config, "spicetls_port", &l))
+            dm_info->spicetls_port = l;
+        xlu_cfg_replace_string (config, "spicehost", &dm_info->spicehost);
+        if (!xlu_cfg_get_long (config, "spicedisable_ticketing", &l))
+            dm_info->spicedisable_ticketing = l;
+        xlu_cfg_replace_string (config, "spicepasswd", &dm_info->spicepasswd);
+        if (!xlu_cfg_get_long (config, "spiceagent_mouse", &l))
+            dm_info->spiceagent_mouse = l;
+        else
+            dm_info->spiceagent_mouse = 1;
         if (!xlu_cfg_get_long (config, "nographic", &l))
             dm_info->nographic = l;
         if (!xlu_cfg_get_long (config, "gfx_passthru", &l))

-- 
Zhou Peng
Operating System Technology Group
Institute of Software, the Chinese Academy of Sciences (ISCAS)

Attachment: spice-upstreamXen-upstreamQemu.diff
Description: Text Data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel