[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: "Xen-Devel (E-mail)" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: ZhouPeng <zpengxen@xxxxxxxxx>
  • Date: Mon, 18 Apr 2011 15:49:56 +0800
  • Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
  • Delivery-date: Mon, 18 Apr 2011 00:50:57 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=ghjnaA5+31TSpfTqr8vuRgK/eAr7adW5+PJwXhlJVLcE0CLuHNiJw75yXnTWibQcaL Yi6DkxOnAvX+UonN48xv0NFWiskkm9o0FPAKe//wspeAhgSdVp3FJ2GixOfMg4QFOUYJ UEfSRIap0yReHpxzEEwPZCXVNxrOoA6JMHa4Q=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx>

This patch allows you to play with 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 configuration file.
#spice
spice=1
spiceport=6000
spicehost='192.168.1.187'
spicedisable_ticketing = 0 # default is 0
spicepasswd = 'password'

apic=0 # disable acpi, but if you used the appended patch, set acpi=0

You may need to disable acpi(I'm not sure),
but if you want to disable acpi, you may need to set
apic = 0, (Yes, It is apic not acpi, pls don't ask me why, because I am also confused with it).
If you feel uncomfortable by setting apic = 0, you can try an additional patch appended,
then you can use acpi=0 in vm cfg file to give "no-acpi" argument to qemu.

For detailed:
http://code.google.com/p/spice4xen/wiki/Using_Upstream_Qemu

diff -r 3f00c5faa12a tools/libxl/libxl.idl
--- a/tools/libxl/libxl.idl    Wed Apr 13 16:10:26 2011 +0100
+++ b/tools/libxl/libxl.idl    Mon Apr 18 10:52:09 2011 +0800
@@ -153,6 +153,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_mouset",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 3f00c5faa12a tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c    Wed Apr 13 16:10:26 2011 +0100
+++ b/tools/libxl/libxl_dm.c    Mon Apr 18 10:52:09 2011 +0800
@@ -225,15 +225,44 @@ static char ** libxl__build_device_model
 
         if (strchr(listen, ':') != NULL)
             flexarray_append(dm_args,
-                    libxl__sprintf(gc, "%s%s", listen,
-                        info->vncunused ? ",to=99" : ""));
+                    libxl__sprintf(gc, "%s%s,%s", listen,
+                        info->vncunused ? ",to=99" : "", info->vncpasswd));
         else
             flexarray_append(dm_args,
-                    libxl__sprintf(gc, "%s:%d%s", listen, display,
-                        info->vncunused ? ",to=99" : ""));
+                    libxl__sprintf(gc, "%s:%d%s,%s", listen, display,
+                        info->vncunused ? ",to=99" : "", info->vncpasswd));
     }
     if (info->sdl) {
         flexarray_append(dm_args, "-sdl");
+    }
+    if (info->spice) {
+        char *spiceoptions = NULL;
+        if (!info->spiceport && !info->spicetls_port) {
+            assert(!"at least one of the spiceport or tls_port must be provided");
+        }
+
+        if (!info->spicedisable_ticketing) {
+            if (!info->spicepasswd)
+                assert(!"spice ticketing is enabled but missing password");
+            else if (!info->spicepasswd[0])
+                assert(!"missing code for supplying spice password");
+        }
+        spiceoptions = libxl__sprintf(gc, "port=%d,tls-port=%d",
+                       info->spiceport, info->spicetls_port);
+        if (!info->spicehost)
+            spiceoptions = libxl__sprintf(gc,
+                    "%s,host=%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_mouset ? "on" : "off");
+
+        flexarray_append(dm_args, "-spice");
+        flexarray_append(dm_args, spiceoptions);
+        printf("SPICE Options:\n  -spice %s\n", spiceoptions);
     }
 
     if (info->type == XENPV && !info->nographic) {
diff -r 3f00c5faa12a tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c    Wed Apr 13 16:10:26 2011 +0100
+++ b/tools/libxl/xl_cmdimpl.c    Mon Apr 18 10:52:10 2011 +0800
@@ -1089,6 +1089,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_mouset = l;
+        else
+            dm_info->spiceagent_mouset = 1;
         if (!xlu_cfg_get_long (config, "nographic", &l))
             dm_info->nographic = l;
         if (!xlu_cfg_get_long (config, "gfx_passthru", &l))


==============================Appended patch======================
Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx>

tool/libxl: mistake apic for acpi in libxl__build_device_model_args_old/new
It may be advisedly coded for some reason, then it can be a mistake of my understanding.

diff -r 6871474a2a09 -r 01f8b29dda8e tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c    Fri Apr 15 10:06:59 2011 +0800
+++ b/tools/libxl/libxl_dm.c    Fri Apr 15 15:17:42 2011 +0800
@@ -120,7 +120,7 @@ static char ** libxl__build_device_model
         if (info->soundhw) {
             flexarray_vappend(dm_args, "-soundhw", info->soundhw, NULL);
         }
-        if (info->apic) {
+        if (info->acpi) {
             flexarray_append(dm_args, "-acpi");
         }
         if (info->vcpus > 1) {
@@ -268,7 +268,7 @@ static char ** libxl__build_device_model
         if (info->soundhw) {
             flexarray_vappend(dm_args, "-soundhw", info->soundhw, NULL);
         }
-        if (!info->apic) {
+        if (!info->acpi) {
             flexarray_append(dm_args, "-no-acpi");
         }
         if (info->vcpus > 1) {


--
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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.