* [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).