qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/8] spice patch queue
@ 2011-01-24 16:20 Gerd Hoffmann
  0 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2011-01-24 16:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

  Hi,

This is the updated spice patch queue.  Changes:

  * rebased against latest master.
  * replaced Alon's chardev patch with v5 which
    addresses blue swirl's review comments.
  * added one locking bugfix.
  * fix bug added recently by configure cleanup.

please pull,
  Gerd

Alon Levy (1):
  spice: add chardev (v5)

Gerd Hoffmann (5):
  add migration state change notifiers
  spice/vnc: client migration.
  spice: MAINTAINERS update
  spice/qxl: zap spice 0.4 migration compatibility bits
  qxl: locking fix

Jiri Denemark (1):
  configure: Fix spice probe

Marc-André Lureau (1):
  vnc/spice: fix "never" and "now" expire_time

 MAINTAINERS       |    8 ++
 Makefile.objs     |    2 +-
 configure         |    6 +-
 hmp-commands.hx   |   17 +++++
 hw/qxl.c          |   81 ++++-------------------
 hw/qxl.h          |    4 -
 migration.c       |   28 ++++++++
 migration.h       |    5 ++
 monitor.c         |   31 ++++++++-
 qemu-char.c       |    4 +
 qemu-config.c     |    6 ++
 qemu-options.hx   |   16 ++++-
 qmp-commands.hx   |   35 ++++++++++
 spice-qemu-char.c |  190 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 trace-events      |    6 ++
 ui/qemu-spice.h   |    7 ++
 ui/spice-core.c   |   25 +++++++
 17 files changed, 391 insertions(+), 80 deletions(-)
 create mode 100644 spice-qemu-char.c

The following changes since commit 0bfe006c5380c5f8a485a55ded3329fbbc224396:

  multiboot: Fix upper memory size in multiboot info (2011-01-23 22:44:13 +0100)

are available in the git repository at:
  git://anongit.freedesktop.org/spice/qemu spice.v29.pull

Alon Levy (1):
      spice: add chardev (v5)

Gerd Hoffmann (5):
      add migration state change notifiers
      spice/vnc: client migration.
      spice: MAINTAINERS update
      spice/qxl: zap spice 0.4 migration compatibility bits
      qxl: locking fix

Jiri Denemark (1):
      configure: Fix spice probe

Marc-André Lureau (1):
      vnc/spice: fix "never" and "now" expire_time

 MAINTAINERS       |    8 ++
 Makefile.objs     |    2 +-
 configure         |    6 +-
 hmp-commands.hx   |   17 +++++
 hw/qxl.c          |   81 ++++-------------------
 hw/qxl.h          |    4 -
 migration.c       |   28 ++++++++
 migration.h       |    5 ++
 monitor.c         |   31 ++++++++-
 qemu-char.c       |    4 +
 qemu-config.c     |    6 ++
 qemu-options.hx   |   16 ++++-
 qmp-commands.hx   |   35 ++++++++++
 spice-qemu-char.c |  190 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 trace-events      |    6 ++
 ui/qemu-spice.h   |    7 ++
 ui/spice-core.c   |   25 +++++++
 17 files changed, 391 insertions(+), 80 deletions(-)
 create mode 100644 spice-qemu-char.c

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/8] spice patch queue
@ 2011-01-27 10:12 Gerd Hoffmann
  2011-02-01 21:24 ` Anthony Liguori
  0 siblings, 1 reply; 15+ messages in thread
From: Gerd Hoffmann @ 2011-01-27 10:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

  Hi,

This is the updated spice patch queue.  Changes:

  * rebased against latest master, solved conflicts (trace-events).
  * added one more locking bugfix, found by Alon.

please pull,
  Gerd

The following changes since commit 0fad6efce5d3f18278b7239dece3c251b3e7c04d:

  target-arm: Fix loading of scalar value for Neon multiply-by-scalar (2011-01-26 14:30:24 +0100)

are available in the git repository at:
  git://anongit.freedesktop.org/spice/qemu spice.v30.pull

Alon Levy (1):
      spice: add chardev (v5)

Gerd Hoffmann (5):
      add migration state change notifiers
      spice/vnc: client migration.
      spice: MAINTAINERS update
      spice/qxl: zap spice 0.4 migration compatibility bits
      qxl: locking fixes

Jiri Denemark (1):
      configure: Fix spice probe

Marc-André Lureau (1):
      vnc/spice: fix "never" and "now" expire_time

 MAINTAINERS       |    8 ++
 Makefile.objs     |    2 +-
 configure         |    6 +-
 hmp-commands.hx   |   17 +++++
 hw/qxl.c          |   83 ++++-------------------
 hw/qxl.h          |    4 -
 migration.c       |   28 ++++++++
 migration.h       |    5 ++
 monitor.c         |   31 ++++++++-
 qemu-char.c       |    4 +
 qemu-config.c     |    6 ++
 qemu-options.hx   |   16 ++++-
 qmp-commands.hx   |   35 ++++++++++
 spice-qemu-char.c |  190 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 trace-events      |    7 ++
 ui/qemu-spice.h   |    7 ++
 ui/spice-core.c   |   25 +++++++
 17 files changed, 394 insertions(+), 80 deletions(-)
 create mode 100644 spice-qemu-char.c

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/8] spice patch queue
  2011-01-27 10:12 Gerd Hoffmann
@ 2011-02-01 21:24 ` Anthony Liguori
  0 siblings, 0 replies; 15+ messages in thread
From: Anthony Liguori @ 2011-02-01 21:24 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: qemu-devel

On 01/27/2011 04:12 AM, Gerd Hoffmann wrote:
>    Hi,
>
> This is the updated spice patch queue.  Changes:
>
>    * rebased against latest master, solved conflicts (trace-events).
>    * added one more locking bugfix, found by Alon.
>
> please pull,
>    Gerd
>
> The following changes since commit 0fad6efce5d3f18278b7239dece3c251b3e7c04d:
>
>    target-arm: Fix loading of scalar value for Neon multiply-by-scalar (2011-01-26 14:30:24 +0100)
>
> are available in the git repository at:
>    git://anongit.freedesktop.org/spice/qemu spice.v30.pull
>
> Alon Levy (1):
>        spice: add chardev (v5)
>    

Pulled.  Thanks.

Although I expect that we'll continue working together in the future to 
come up with a common guest agent infrastructure.

Regards,

Anthony Liguori

> Gerd Hoffmann (5):
>        add migration state change notifiers
>        spice/vnc: client migration.
>        spice: MAINTAINERS update
>        spice/qxl: zap spice 0.4 migration compatibility bits
>        qxl: locking fixes
>
> Jiri Denemark (1):
>        configure: Fix spice probe
>
> Marc-André Lureau (1):
>        vnc/spice: fix "never" and "now" expire_time
>
>   MAINTAINERS       |    8 ++
>   Makefile.objs     |    2 +-
>   configure         |    6 +-
>   hmp-commands.hx   |   17 +++++
>   hw/qxl.c          |   83 ++++-------------------
>   hw/qxl.h          |    4 -
>   migration.c       |   28 ++++++++
>   migration.h       |    5 ++
>   monitor.c         |   31 ++++++++-
>   qemu-char.c       |    4 +
>   qemu-config.c     |    6 ++
>   qemu-options.hx   |   16 ++++-
>   qmp-commands.hx   |   35 ++++++++++
>   spice-qemu-char.c |  190 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>   trace-events      |    7 ++
>   ui/qemu-spice.h   |    7 ++
>   ui/spice-core.c   |   25 +++++++
>   17 files changed, 394 insertions(+), 80 deletions(-)
>   create mode 100644 spice-qemu-char.c
>
>
>    

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/8] spice patch queue
@ 2012-10-08 10:49 Gerd Hoffmann
  2012-10-12 16:18 ` Anthony Liguori
  0 siblings, 1 reply; 15+ messages in thread
From: Gerd Hoffmann @ 2012-10-08 10:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

  Hi,

Here comes the spice patch queue.  It raises the minimal required
spice-server version to 0.12 and the qxl device revision to 4.
It also brings a collection of bugfixes.

please pull,
  Gerd

The following changes since commit 4bb26682f70a5f626cad3e0ac82bf4b6252ea7a4:

  Merge branch 'master' of git.qemu.org:/pub/git/qemu (2012-10-07 18:42:18 +0000)

are available in the git repository at:

  git://anongit.freedesktop.org/spice/qemu spice.v61

Alon Levy (3):
      hw/qxl: exit on failure to register qxl interface
      hw/qxl: fix condition for exiting guest_bug
      hw/qxl: qxl_dirty_surfaces: use uintptr_t

Gerd Hoffmann (4):
      qxl: always update displaysurface on resize
      qxl: fix range check for rev3 io commands.
      spice: raise requirement to 0.12
      qxl: set default revision to 4

Michael Tokarev (1):
      qxl/update_area_io: cleanup invalid parameters handling

 configure          |   18 +--------------
 hw/pc_piix.c       |    8 +++++++
 hw/qxl-render.c    |    4 ---
 hw/qxl.c           |   57 +++++++++++-----------------------------------------
 hw/qxl.h           |    5 ----
 ui/spice-core.c    |   51 +--------------------------------------------
 ui/spice-display.c |   38 ----------------------------------
 ui/spice-display.h |    5 ----
 8 files changed, 24 insertions(+), 162 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/8] spice patch queue
  2012-10-08 10:49 Gerd Hoffmann
@ 2012-10-12 16:18 ` Anthony Liguori
  0 siblings, 0 replies; 15+ messages in thread
From: Anthony Liguori @ 2012-10-12 16:18 UTC (permalink / raw)
  To: Gerd Hoffmann, qemu-devel

Gerd Hoffmann <kraxel@redhat.com> writes:

>   Hi,
>
> Here comes the spice patch queue.  It raises the minimal required
> spice-server version to 0.12 and the qxl device revision to 4.
> It also brings a collection of bugfixes.
>
> please pull,
>   Gerd
>

Pulled. Thanks.

Regards,

Anthony Liguori

> The following changes since commit 4bb26682f70a5f626cad3e0ac82bf4b6252ea7a4:
>
>   Merge branch 'master' of git.qemu.org:/pub/git/qemu (2012-10-07 18:42:18 +0000)
>
> are available in the git repository at:
>
>   git://anongit.freedesktop.org/spice/qemu spice.v61
>
> Alon Levy (3):
>       hw/qxl: exit on failure to register qxl interface
>       hw/qxl: fix condition for exiting guest_bug
>       hw/qxl: qxl_dirty_surfaces: use uintptr_t
>
> Gerd Hoffmann (4):
>       qxl: always update displaysurface on resize
>       qxl: fix range check for rev3 io commands.
>       spice: raise requirement to 0.12
>       qxl: set default revision to 4
>
> Michael Tokarev (1):
>       qxl/update_area_io: cleanup invalid parameters handling
>
>  configure          |   18 +--------------
>  hw/pc_piix.c       |    8 +++++++
>  hw/qxl-render.c    |    4 ---
>  hw/qxl.c           |   57 +++++++++++-----------------------------------------
>  hw/qxl.h           |    5 ----
>  ui/spice-core.c    |   51 +--------------------------------------------
>  ui/spice-display.c |   38 ----------------------------------
>  ui/spice-display.h |    5 ----
>  8 files changed, 24 insertions(+), 162 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/8] spice patch queue
@ 2012-12-17 13:04 Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 1/8] qxl: save qemu_create_displaysurface_from result Gerd Hoffmann
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

  Hi,

This is the spice patch queue, bringing two bugfixes
and chardev redirection over spice.

please pull,
  Gerd

The following changes since commit a8a826a3c3b8c8a1c4def0e9e22b46e78e6163a0:

  exec: refactor cpu_restore_state (2012-12-16 08:35:24 +0000)

are available in the git repository at:
  git://anongit.freedesktop.org/spice/qemu spice.v66

Gerd Hoffmann (1):
      qxl: save qemu_create_displaysurface_from result

Marc-André Lureau (6):
      spice-qemu-char: write to chardev whatever amount it can read
      spice-qemu-char: factor out CharDriverState creation
      spice-qemu-char: add spiceport chardev
      spice-qemu-char: keep a list of spice chardev
      spice-qemu-char: register spicevmc ports during qemu_spice_init()
      docs: add spice-port-fqdn.txt

Uri Lublin (1):
      qxl+vnc: register a vm state change handler for dummy spice_server

 docs/spice-port-fqdn.txt |   19 ++++++++
 hw/qxl-render.c          |   11 +++--
 qemu-char.c              |    3 +
 qemu-options.hx          |   13 ++++++
 spice-qemu-char.c        |  107 ++++++++++++++++++++++++++++++++++++++--------
 trace-events             |    1 +
 ui/qemu-spice.h          |    4 ++
 ui/spice-core.c          |    6 +++
 8 files changed, 141 insertions(+), 23 deletions(-)
 create mode 100644 docs/spice-port-fqdn.txt

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 1/8] qxl: save qemu_create_displaysurface_from result
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 2/8] qxl+vnc: register a vm state change handler for dummy spice_server Gerd Hoffmann
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann, qemu-stable

Spotted by Coverity.

https://bugzilla.redhat.com/show_bug.cgi?id=885644

Cc: qemu-stable@nongnu.org
Reported-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/qxl-render.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/hw/qxl-render.c b/hw/qxl-render.c
index 98ecb21..88e63f8 100644
--- a/hw/qxl-render.c
+++ b/hw/qxl-render.c
@@ -113,11 +113,12 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)
                qxl->guest_primary.bits_pp);
         if (qxl->guest_primary.qxl_stride > 0) {
             qemu_free_displaysurface(vga->ds);
-            qemu_create_displaysurface_from(qxl->guest_primary.surface.width,
-                                            qxl->guest_primary.surface.height,
-                                            qxl->guest_primary.bits_pp,
-                                            qxl->guest_primary.abs_stride,
-                                            qxl->guest_primary.data);
+            vga->ds->surface = qemu_create_displaysurface_from
+                (qxl->guest_primary.surface.width,
+                 qxl->guest_primary.surface.height,
+                 qxl->guest_primary.bits_pp,
+                 qxl->guest_primary.abs_stride,
+                 qxl->guest_primary.data);
         } else {
             qemu_resize_displaysurface(vga->ds,
                     qxl->guest_primary.surface.width,
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 2/8] qxl+vnc: register a vm state change handler for dummy spice_server
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 1/8] qxl: save qemu_create_displaysurface_from result Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 3/8] spice-qemu-char: write to chardev whatever amount it can read Gerd Hoffmann
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Uri Lublin, qemu-stable, Gerd Hoffmann

From: Uri Lublin <uril@redhat.com>

When qxl + vnc are used, a dummy spice_server is initialized.
The spice_server has to be told when the VM runstate changes,
which is what this patch does.

Without it, from qxl_send_events(), the following error message is shown:
  qxl_send_events: spice-server bug: guest stopped, ignoring

Cc: qemu-stable@nongnu.org
Signed-off-by: Uri Lublin <uril@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 ui/spice-core.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/ui/spice-core.c b/ui/spice-core.c
index 261c6f2..59ce5f6 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -732,6 +732,8 @@ int qemu_spice_add_interface(SpiceBaseInstance *sin)
          */
         spice_server = spice_server_new();
         spice_server_init(spice_server, &core_interface);
+        qemu_add_vm_change_state_handler(vm_change_state_handler,
+                                         &spice_server);
     }
 
     return spice_server_add_interface(spice_server, sin);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 3/8] spice-qemu-char: write to chardev whatever amount it can read
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 1/8] qxl: save qemu_create_displaysurface_from result Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 2/8] qxl+vnc: register a vm state change handler for dummy spice_server Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 4/8] spice-qemu-char: factor out CharDriverState creation Gerd Hoffmann
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

The current code waits until the chardev can read MIN(len, VMC_MAX)
But some chardev may never reach than amount, in fact some of them
will only ever accept write of 1. Fix the min computation and remove
the VMC_MAX constant.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 spice-qemu-char.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 09aa22d..665efd3 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -14,8 +14,6 @@
         }                                                               \
     } while (0)
 
-#define VMC_MAX_HOST_WRITE    2048
-
 typedef struct SpiceCharDriver {
     CharDriverState*      chr;
     SpiceCharDeviceInstance     sin;
@@ -35,8 +33,8 @@ static int vmc_write(SpiceCharDeviceInstance *sin, const uint8_t *buf, int len)
     uint8_t* p = (uint8_t*)buf;
 
     while (len > 0) {
-        last_out = MIN(len, VMC_MAX_HOST_WRITE);
-        if (qemu_chr_be_can_write(scd->chr) < last_out) {
+        last_out = MIN(len, qemu_chr_be_can_write(scd->chr));
+        if (last_out <= 0) {
             break;
         }
         qemu_chr_be_write(scd->chr, p, last_out);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 4/8] spice-qemu-char: factor out CharDriverState creation
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (2 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 3/8] spice-qemu-char: write to chardev whatever amount it can read Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 5/8] spice-qemu-char: add spiceport chardev Gerd Hoffmann
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

Make the CharDriverState creation code reusable by spicevmc port.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 spice-qemu-char.c |   37 +++++++++++++++++++++++--------------
 1 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 665efd3..b86e83a 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -186,13 +186,32 @@ static void print_allowed_subtypes(void)
     fprintf(stderr, "\n");
 }
 
-CharDriverState *qemu_chr_open_spice(QemuOpts *opts)
+static CharDriverState *chr_open(QemuOpts *opts, const char *subtype)
 {
     CharDriverState *chr;
     SpiceCharDriver *s;
-    const char* name = qemu_opt_get(opts, "name");
     uint32_t debug = qemu_opt_get_number(opts, "debug", 0);
-    const char** psubtype = spice_server_char_device_recognized_subtypes();
+
+    chr = g_malloc0(sizeof(CharDriverState));
+    s = g_malloc0(sizeof(SpiceCharDriver));
+    s->chr = chr;
+    s->debug = debug;
+    s->active = false;
+    s->sin.subtype = subtype;
+    chr->opaque = s;
+    chr->chr_write = spice_chr_write;
+    chr->chr_close = spice_chr_close;
+    chr->chr_guest_open = spice_chr_guest_open;
+    chr->chr_guest_close = spice_chr_guest_close;
+
+    return chr;
+}
+
+CharDriverState *qemu_chr_open_spice(QemuOpts *opts)
+{
+    CharDriverState *chr;
+    const char *name = qemu_opt_get(opts, "name");
+    const char **psubtype = spice_server_char_device_recognized_subtypes();
     const char *subtype = NULL;
 
     if (name == NULL) {
@@ -212,17 +231,7 @@ CharDriverState *qemu_chr_open_spice(QemuOpts *opts)
         return NULL;
     }
 
-    chr = g_malloc0(sizeof(CharDriverState));
-    s = g_malloc0(sizeof(SpiceCharDriver));
-    s->chr = chr;
-    s->debug = debug;
-    s->active = false;
-    s->sin.subtype = subtype;
-    chr->opaque = s;
-    chr->chr_write = spice_chr_write;
-    chr->chr_close = spice_chr_close;
-    chr->chr_guest_open = spice_chr_guest_open;
-    chr->chr_guest_close = spice_chr_guest_close;
+    chr = chr_open(opts, subtype);
 
 #if SPICE_SERVER_VERSION < 0x000901
     /* See comment in vmc_state() */
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 5/8] spice-qemu-char: add spiceport chardev
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (3 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 4/8] spice-qemu-char: factor out CharDriverState creation Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 6/8] spice-qemu-char: keep a list of spice chardev Gerd Hoffmann
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

Add a new spice chardev to allow arbitrary communication between the
host and the Spice client via the spice server.

Examples:

This allows the Spice client to have a special port for the qemu
monitor:

... -chardev spiceport,name=org.qemu.monitor,id=monitorport
    -mon chardev=monitorport

v2:
- remove support for chardev to chardev linking
- conditionnaly compile with SPICE_SERVER_VERSION

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 qemu-char.c       |    3 +++
 qemu-options.hx   |   13 +++++++++++++
 spice-qemu-char.c |   45 +++++++++++++++++++++++++++++++++++++++++++++
 trace-events      |    1 +
 ui/qemu-spice.h   |    3 +++
 5 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/qemu-char.c b/qemu-char.c
index 242b799..9940701 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2762,6 +2762,9 @@ static const struct {
 #endif
 #ifdef CONFIG_SPICE
     { .name = "spicevmc",     .open = qemu_chr_open_spice },
+#if SPICE_SERVER_VERSION >= 0x000c02
+    { .name = "spiceport",    .open = qemu_chr_open_spice_port },
+#endif
 #endif
 };
 
diff --git a/qemu-options.hx b/qemu-options.hx
index 231cc4f..9df0cde 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -1749,6 +1749,7 @@ DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
 #endif
 #if defined(CONFIG_SPICE)
     "-chardev spicevmc,id=id,name=name[,debug=debug]\n"
+    "-chardev spiceport,id=id,name=name[,debug=debug]\n"
 #endif
     , QEMU_ARCH_ALL
 )
@@ -1776,6 +1777,7 @@ Backend is one of:
 @option{tty},
 @option{parport},
 @option{spicevmc}.
+@option{spiceport}.
 The specific backend will determine the applicable options.
 
 All devices must have an id, which can be any string up to 127 characters long.
@@ -1961,6 +1963,17 @@ required.
 
 Connect to a spice virtual machine channel, such as vdiport.
 
+@item -chardev spiceport ,id=@var{id} ,debug=@var{debug}, name=@var{name}
+
+@option{spiceport} is only available when spice support is built in.
+
+@option{debug} debug level for spicevmc
+
+@option{name} name of spice port to connect to
+
+Connect to a spice port, allowing a Spice client to handle the traffic
+identified by a name (preferably a fqdn).
+
 @end table
 ETEXI
 
diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index b86e83a..4be75ba 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -3,6 +3,7 @@
 #include "ui/qemu-spice.h"
 #include <spice.h>
 #include <spice-experimental.h>
+#include <spice/protocol.h>
 
 #include "osdep.h"
 
@@ -67,6 +68,27 @@ static int vmc_read(SpiceCharDeviceInstance *sin, uint8_t *buf, int len)
     return bytes;
 }
 
+#if SPICE_SERVER_VERSION >= 0x000c02
+static void vmc_event(SpiceCharDeviceInstance *sin, uint8_t event)
+{
+    SpiceCharDriver *scd = container_of(sin, SpiceCharDriver, sin);
+    int chr_event;
+
+    switch (event) {
+    case SPICE_PORT_EVENT_BREAK:
+        chr_event = CHR_EVENT_BREAK;
+        break;
+    default:
+        dprintf(scd, 2, "%s: unknown %d\n", __func__, event);
+        return;
+    }
+
+    dprintf(scd, 2, "%s: %d\n", __func__, event);
+    trace_spice_vmc_event(chr_event);
+    qemu_chr_be_event(scd->chr, chr_event);
+}
+#endif
+
 static void vmc_state(SpiceCharDeviceInstance *sin, int connected)
 {
     SpiceCharDriver *scd = container_of(sin, SpiceCharDriver, sin);
@@ -103,6 +125,9 @@ static SpiceCharDeviceInterface vmc_interface = {
     .state              = vmc_state,
     .write              = vmc_write,
     .read               = vmc_read,
+#if SPICE_SERVER_VERSION >= 0x000c02
+    .event              = vmc_event,
+#endif
 };
 
 
@@ -242,3 +267,23 @@ CharDriverState *qemu_chr_open_spice(QemuOpts *opts)
 
     return chr;
 }
+
+#if SPICE_SERVER_VERSION >= 0x000c02
+CharDriverState *qemu_chr_open_spice_port(QemuOpts *opts)
+{
+    CharDriverState *chr;
+    SpiceCharDriver *s;
+    const char *name = qemu_opt_get(opts, "name");
+
+    if (name == NULL) {
+        fprintf(stderr, "spice-qemu-char: missing name parameter\n");
+        return NULL;
+    }
+
+    chr = chr_open(opts, "port");
+    s = chr->opaque;
+    s->sin.portname = name;
+
+    return chr;
+}
+#endif
diff --git a/trace-events b/trace-events
index 6cb450a..bb7621e 100644
--- a/trace-events
+++ b/trace-events
@@ -535,6 +535,7 @@ spice_vmc_write(ssize_t out, int len) "spice wrottn %zd of requested %d"
 spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
 spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
 spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
+spice_vmc_event(int event) "spice vmc event %d"
 
 # hw/lm32_pic.c
 lm32_pic_raise_irq(void) "Raise CPU interrupt"
diff --git a/ui/qemu-spice.h b/ui/qemu-spice.h
index 3299da8..5669767 100644
--- a/ui/qemu-spice.h
+++ b/ui/qemu-spice.h
@@ -46,6 +46,9 @@ void do_info_spice_print(Monitor *mon, const QObject *data);
 void do_info_spice(Monitor *mon, QObject **ret_data);
 
 CharDriverState *qemu_chr_open_spice(QemuOpts *opts);
+#if SPICE_SERVER_VERSION >= 0x000c02
+CharDriverState *qemu_chr_open_spice_port(QemuOpts *opts);
+#endif
 
 #else  /* CONFIG_SPICE */
 #include "monitor.h"
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 6/8] spice-qemu-char: keep a list of spice chardev
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (4 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 5/8] spice-qemu-char: add spiceport chardev Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 7/8] spice-qemu-char: register spicevmc ports during qemu_spice_init() Gerd Hoffmann
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 spice-qemu-char.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 4be75ba..4eb85ae 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -24,8 +24,12 @@ typedef struct SpiceCharDriver {
     uint8_t               *datapos;
     ssize_t               bufsize, datalen;
     uint32_t              debug;
+    QLIST_ENTRY(SpiceCharDriver) next;
 } SpiceCharDriver;
 
+static QLIST_HEAD(, SpiceCharDriver) spice_chars =
+    QLIST_HEAD_INITIALIZER(spice_chars);
+
 static int vmc_write(SpiceCharDeviceInstance *sin, const uint8_t *buf, int len)
 {
     SpiceCharDriver *scd = container_of(sin, SpiceCharDriver, sin);
@@ -179,6 +183,7 @@ static void spice_chr_close(struct CharDriverState *chr)
 
     printf("%s\n", __func__);
     vmc_unregister_interface(s);
+    QLIST_REMOVE(s, next);
     g_free(s);
 }
 
@@ -229,6 +234,8 @@ static CharDriverState *chr_open(QemuOpts *opts, const char *subtype)
     chr->chr_guest_open = spice_chr_guest_open;
     chr->chr_guest_close = spice_chr_guest_close;
 
+    QLIST_INSERT_HEAD(&spice_chars, s, next);
+
     return chr;
 }
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 7/8] spice-qemu-char: register spicevmc ports during qemu_spice_init()
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (5 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 6/8] spice-qemu-char: keep a list of spice chardev Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 8/8] docs: add spice-port-fqdn.txt Gerd Hoffmann
  2012-12-18 23:49 ` [Qemu-devel] [PULL 0/8] spice patch queue Anthony Liguori
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

Do the delayed registration of spicevmc ports after Spice server is
initialized.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 spice-qemu-char.c |   12 ++++++++++++
 ui/qemu-spice.h   |    1 +
 ui/spice-core.c   |    4 ++++
 3 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 4eb85ae..b2586c2 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -293,4 +293,16 @@ CharDriverState *qemu_chr_open_spice_port(QemuOpts *opts)
 
     return chr;
 }
+
+void qemu_spice_register_ports(void)
+{
+    SpiceCharDriver *s;
+
+    QLIST_FOREACH(s, &spice_chars, next) {
+        if (s->sin.portname == NULL) {
+            continue;
+        }
+        vmc_register_interface(s);
+    }
+}
 #endif
diff --git a/ui/qemu-spice.h b/ui/qemu-spice.h
index 5669767..642f012 100644
--- a/ui/qemu-spice.h
+++ b/ui/qemu-spice.h
@@ -48,6 +48,7 @@ void do_info_spice(Monitor *mon, QObject **ret_data);
 CharDriverState *qemu_chr_open_spice(QemuOpts *opts);
 #if SPICE_SERVER_VERSION >= 0x000c02
 CharDriverState *qemu_chr_open_spice_port(QemuOpts *opts);
+void qemu_spice_register_ports(void);
 #endif
 
 #else  /* CONFIG_SPICE */
diff --git a/ui/spice-core.c b/ui/spice-core.c
index 59ce5f6..ac46deb 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -714,6 +714,10 @@ void qemu_spice_init(void)
     g_free(x509_key_file);
     g_free(x509_cert_file);
     g_free(x509_cacert_file);
+
+#if SPICE_SERVER_VERSION >= 0x000c02
+    qemu_spice_register_ports();
+#endif
 }
 
 int qemu_spice_add_interface(SpiceBaseInstance *sin)
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PATCH 8/8] docs: add spice-port-fqdn.txt
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (6 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 7/8] spice-qemu-char: register spicevmc ports during qemu_spice_init() Gerd Hoffmann
@ 2012-12-17 13:04 ` Gerd Hoffmann
  2012-12-18 23:49 ` [Qemu-devel] [PULL 0/8] spice patch queue Anthony Liguori
  8 siblings, 0 replies; 15+ messages in thread
From: Gerd Hoffmann @ 2012-12-17 13:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@gmail.com>

Start a simple org.qemu.* registry of well known name.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 docs/spice-port-fqdn.txt |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)
 create mode 100644 docs/spice-port-fqdn.txt

diff --git a/docs/spice-port-fqdn.txt b/docs/spice-port-fqdn.txt
new file mode 100644
index 0000000..5077895
--- /dev/null
+++ b/docs/spice-port-fqdn.txt
@@ -0,0 +1,19 @@
+A Spice port channel is an arbitrary communication between the Spice
+server host side and the client side.
+
+Thanks to the associated reverse fully qualified domain name (fqdn),
+a Spice client can handle the various ports appropriately.
+
+The following fqdn names are reserved by the QEMU project:
+
+org.qemu.monitor.hmp.0
+  QEMU human monitor
+
+org.qemu.monitor.qmp.0:
+  QEMU control monitor
+
+org.qemu.console.serial.0
+  QEMU virtual serial port
+
+org.qemu.console.debug.0
+  QEMU debug console
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/8] spice patch queue
  2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
                   ` (7 preceding siblings ...)
  2012-12-17 13:04 ` [Qemu-devel] [PATCH 8/8] docs: add spice-port-fqdn.txt Gerd Hoffmann
@ 2012-12-18 23:49 ` Anthony Liguori
  8 siblings, 0 replies; 15+ messages in thread
From: Anthony Liguori @ 2012-12-18 23:49 UTC (permalink / raw)
  To: Gerd Hoffmann, qemu-devel

Gerd Hoffmann <kraxel@redhat.com> writes:

>   Hi,
>
> This is the spice patch queue, bringing two bugfixes
> and chardev redirection over spice.

Pulled. Thanks.

Regards,

Anthony Liguori

>
> please pull,
>   Gerd
>
> The following changes since commit a8a826a3c3b8c8a1c4def0e9e22b46e78e6163a0:
>
>   exec: refactor cpu_restore_state (2012-12-16 08:35:24 +0000)
>
> are available in the git repository at:
>   git://anongit.freedesktop.org/spice/qemu spice.v66
>
> Gerd Hoffmann (1):
>       qxl: save qemu_create_displaysurface_from result
>
> Marc-André Lureau (6):
>       spice-qemu-char: write to chardev whatever amount it can read
>       spice-qemu-char: factor out CharDriverState creation
>       spice-qemu-char: add spiceport chardev
>       spice-qemu-char: keep a list of spice chardev
>       spice-qemu-char: register spicevmc ports during qemu_spice_init()
>       docs: add spice-port-fqdn.txt
>
> Uri Lublin (1):
>       qxl+vnc: register a vm state change handler for dummy spice_server
>
>  docs/spice-port-fqdn.txt |   19 ++++++++
>  hw/qxl-render.c          |   11 +++--
>  qemu-char.c              |    3 +
>  qemu-options.hx          |   13 ++++++
>  spice-qemu-char.c        |  107 ++++++++++++++++++++++++++++++++++++++--------
>  trace-events             |    1 +
>  ui/qemu-spice.h          |    4 ++
>  ui/spice-core.c          |    6 +++
>  8 files changed, 141 insertions(+), 23 deletions(-)
>  create mode 100644 docs/spice-port-fqdn.txt

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2012-12-18 23:49 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-17 13:04 [Qemu-devel] [PULL 0/8] spice patch queue Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 1/8] qxl: save qemu_create_displaysurface_from result Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 2/8] qxl+vnc: register a vm state change handler for dummy spice_server Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 3/8] spice-qemu-char: write to chardev whatever amount it can read Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 4/8] spice-qemu-char: factor out CharDriverState creation Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 5/8] spice-qemu-char: add spiceport chardev Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 6/8] spice-qemu-char: keep a list of spice chardev Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 7/8] spice-qemu-char: register spicevmc ports during qemu_spice_init() Gerd Hoffmann
2012-12-17 13:04 ` [Qemu-devel] [PATCH 8/8] docs: add spice-port-fqdn.txt Gerd Hoffmann
2012-12-18 23:49 ` [Qemu-devel] [PULL 0/8] spice patch queue Anthony Liguori
  -- strict thread matches above, loose matches on Subject: below --
2012-10-08 10:49 Gerd Hoffmann
2012-10-12 16:18 ` Anthony Liguori
2011-01-27 10:12 Gerd Hoffmann
2011-02-01 21:24 ` Anthony Liguori
2011-01-24 16:20 Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).