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

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


  • To: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>, "ian.jackson" <Ian.Jackson@xxxxxxxxxxxxx>
  • From: ZhouPeng <zpengxen@xxxxxxxxx>
  • Date: Tue, 19 Apr 2011 12:46:02 +0800
  • Cc: "Xen-Devel \(E-mail\)" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 18 Apr 2011 21:46:58 -0700
  • 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=nQigL4ddH/2JaLSx7FtZhFEKXSqCtx4uFhaOgqPC+PZwnPX0EfkhmfencljudU5wnj rhCqrQYeBMCrCm5zzSOgmG9MzzlPgaaxlVMHfw7VmGy/dU+62Jo2uSurP0P73WLkTApw jZ0wyZaJ8WRzQfCTaQVyoYp5mcLQ3qosFjKs0=
  • 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.


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     Tue Apr 19 12:31:19 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_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 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    Tue Apr 19 12:31:19 2011 +0800
@@ -234,6 +234,42 @@ 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,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_mouse ? "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  Tue Apr 19 12:31:19 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_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))


==============================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) {


> > For detailed:
> > http://code.google.com/p/spice4xen/wiki/Using_Upstream_Qemu
>
> Cool! Does it mean that it works right now?
    Yes, it works right. now.
>
>

> > -                    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));
>
> This is not actually part of the spice support patch to libxl, is it?
No, it is not part of spice of libxl. It's mess msg because of my negligence


Thanks for your review,

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