Re: [Spice-devel] [PATCH spice-server 3/3] common-graphics-channel: use manual flushing on stream to decrease packet fragmentation

2018-04-12 Thread Christophe Fergeau
On Tue, Jan 16, 2018 at 02:18:15PM +, Frediano Ziglio wrote:
> In order to use new TCP_CORK feature disable auto flush.

'the new TCP_CORK feature, disable auto flush'
Might be worth explaining in the commit log why you disable auto_flush
only for RedCommonGraphicsChannel.

> 
> Signed-off-by: Frediano Ziglio 
> ---
>  server/common-graphics-channel.c | 17 +
>  server/red-channel-client.c  |  1 +
>  2 files changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/server/common-graphics-channel.c 
> b/server/common-graphics-channel.c
> index ce6b5e57..083ab3eb 100644
> --- a/server/common-graphics-channel.c
> +++ b/server/common-graphics-channel.c
> @@ -83,14 +83,15 @@ bool common_channel_client_config_socket(RedChannelClient 
> *rcc)
>  
>  // TODO - this should be dynamic, not one time at channel creation
>  is_low_bandwidth = main_channel_client_is_low_bandwidth(mcc);
> -/* FIXME: Using Nagle's Algorithm can lead to apparent delays, depending
> - * on the delayed ack timeout on the other side.
> - * Instead of using Nagle's, we need to implement message buffering on
> - * the application level.
> - * see: http://www.stuartcheshire.org/papers/NagleDelayedAck/
> - */
> -red_stream_set_no_delay(stream, !is_low_bandwidth);
> -
> +if (!red_stream_set_auto_flush(stream, false)) {
> +/* FIXME: Using Nagle's Algorithm can lead to apparent delays, 
> depending
> + * on the delayed ack timeout on the other side.
> + * Instead of using Nagle's, we need to implement message buffering 
> on
> + * the application level.
> + * see: http://www.stuartcheshire.org/papers/NagleDelayedAck/
> + */
> +red_stream_set_no_delay(stream, !is_low_bandwidth);
> +}
>  // TODO: move wide/narrow ack setting to red_channel.
>  red_channel_client_ack_set_client_window(rcc,
>  is_low_bandwidth ?
> diff --git a/server/red-channel-client.c b/server/red-channel-client.c
> index f154c5c6..32ac30d1 100644
> --- a/server/red-channel-client.c
> +++ b/server/red-channel-client.c
> @@ -1328,6 +1328,7 @@ void red_channel_client_push(RedChannelClient *rcc)
>  if ((red_channel_client_no_item_being_sent(rcc) && 
> g_queue_is_empty(>priv->pipe)) ||
>  red_channel_client_waiting_for_ack(rcc)) {
>  red_channel_client_watch_update_mask(rcc, SPICE_WATCH_EVENT_READ);
> +red_stream_flush(rcc->priv->stream);

I would add a rationale in the commit log regarding why the
red_stream_flush() is in this specific place.

Christophe


signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [PATCH spice-server 2/3] stream: implements flush using TCP_CORK

2018-04-12 Thread Christophe Fergeau
On Tue, Jan 16, 2018 at 02:18:14PM +, Frediano Ziglio wrote:
> Cork is a system interface implemented by Linux and some *BSD systems to
> tell the system that other data are expected to be written to a socket.
> This allows the system to reduce network fragmentation waiting a network

'waiting for network packets to be complete' I think.

> packet to be complete.
> 
> Using some replay capture and some instrumentation resulted in a
> bandwith reduction of 11% and a packet reduction of 56%.

I would add a link to 
https://lists.freedesktop.org/archives/spice-devel/2017-February/035577.html
and maybe even copy the data you put in there.

> 
> Signed-off-by: Frediano Ziglio 
> ---
>  server/red-stream.c | 34 +-
>  1 file changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/server/red-stream.c b/server/red-stream.c
> index 4812d8e4..4833077c 100644
> --- a/server/red-stream.c
> +++ b/server/red-stream.c
> @@ -24,6 +24,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  
>  #include 
>  
> @@ -83,6 +84,8 @@ struct RedStreamPrivate {
>   * deallocated when main_dispatcher handles the 
> SPICE_CHANNEL_EVENT_DISCONNECTED
>   * event, either from same thread or by call back from main thread. */
>  SpiceChannelEventInfo* info;
> +bool use_cork;
> +bool corked;
>  
>  ssize_t (*read)(RedStream *s, void *buf, size_t nbyte);
>  ssize_t (*write)(RedStream *s, const void *buf, size_t nbyte);
> @@ -92,6 +95,15 @@ struct RedStreamPrivate {
>  SpiceCoreInterfaceInternal *core;
>  };
>  
> +/**
> + * Set TCP_CORK on socket
> + */
> +/* NOTE: enabled must be int */

Maybe verify(sizeof(socket) == sizeof(int))?

> +static inline int socket_set_cork(int socket, int enabled)

I'd drop the 'inline'

> +{
> +return setsockopt(socket, IPPROTO_TCP, TCP_CORK, , 
> sizeof(enabled));

I suspect we'll need to add a configure check for this? It seems to be
called TCP_NOPUSH in OpenBSD? https://man.openbsd.org/tcp

> +}
> +
>  static ssize_t stream_write_cb(RedStream *s, const void *buf, size_t size)
>  {
>  return write(s->socket, buf, size);
> @@ -205,11 +217,31 @@ bool red_stream_write_all(RedStream *stream, const void 
> *in_buf, size_t n)
>  
>  bool red_stream_set_auto_flush(RedStream *s, bool enable)
>  {
> -return enable;
> +if (s->priv->use_cork == !enable) {

Might be slightly more readable if 'enable' is renamed to 'auto_flush'


Acked-by: Christophe Fergeau 


signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [PATCH spice-server 1/3] stream: implement interface for manual flush

2018-04-12 Thread Christophe Fergeau
Hey, I would just squash this with the next commit.

On Tue, Jan 16, 2018 at 02:18:13PM +, Frediano Ziglio wrote:
> The writing to network was always immediate.
> Every write in the stream cause a write to the OS.

'causes'


> This can have some penalty if you don't write large data as network
> packets can be more fragmented or you encrypt data in smaller chunks
> (when data are encrypted some padding is added then data is split in
> multiple of encryption block which is usually the size of encryption
> key and this is done for every write).
> Define an interface to allow higher levels code to tell low level when
> data should be sent to remote or when can wait more data.
> 
> Signed-off-by: Frediano Ziglio 
> ---
>  server/red-stream.c |  9 +
>  server/red-stream.h | 20 
>  2 files changed, 29 insertions(+)
> 
> diff --git a/server/red-stream.c b/server/red-stream.c
> index 8f2c9d32..4812d8e4 100644
> --- a/server/red-stream.c
> +++ b/server/red-stream.c
> @@ -203,6 +203,15 @@ bool red_stream_write_all(RedStream *stream, const void 
> *in_buf, size_t n)
>  return true;
>  }
>  
> +bool red_stream_set_auto_flush(RedStream *s, bool enable)
> +{
> +return enable;
> +}
> +
> +void red_stream_flush(RedStream *s)
> +{
> +}
> +
>  #if HAVE_SASL
>  static ssize_t red_stream_sasl_write(RedStream *s, const void *buf, size_t 
> nbyte);
>  #endif
> diff --git a/server/red-stream.h b/server/red-stream.h
> index 4d5075ed..7338c75b 100644
> --- a/server/red-stream.h
> +++ b/server/red-stream.h
> @@ -69,6 +69,26 @@ bool red_stream_set_no_delay(RedStream *stream, bool 
> no_delay);
>  int red_stream_get_no_delay(RedStream *stream);
>  int red_stream_send_msgfd(RedStream *stream, int fd);
>  
> +/**
> + * Set auto flush flags.

'flag'

> + * If set stream will send data to the underlying socket as

'If set, the stream will ...'

> + * soon as data are written. This is the default.
> + * If not set you should call red_stream_flush to force

'If not set, you should ...'

> + * data to be sent. Failing to call red_stream_flush on a
> + * manual flush stream could lead to latency.
> + * Disabling auto flush can fail while enabling cannot.
> + *
> + * Returns true if success or false on failure.

'on success' maybe


Acked-by: Christophe Fergeau 


> + */
> +bool red_stream_set_auto_flush(RedStream *stream, bool enable);
> +
> +/**
> + * Flush data to the underlying socket.
> + * Calling this function on a stream with auto flush set has
> + * no result.
> + */
> +void red_stream_flush(RedStream *stream);
> +
>  typedef enum {
>  RED_SASL_ERROR_OK,
>  RED_SASL_ERROR_GENERIC,
> -- 
> 2.14.3
> 
> ___
> Spice-devel mailing list
> Spice-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] [qxl-wddm-dod] Prevent installation on OSes earlier than Windows 8

2018-04-12 Thread Basil Salman
Hi,

We received a bug report: 
https://github.com/virtio-win/kvm-guest-drivers-windows/issues/244 (BZ - Bug 
1542909),
regarding BSOD on Windows 7 when letting windows automatically choose the 
driver from virtio-win iso.
After debugging the issue, we found out that Windows was falsely installing 
wddm drivers for Windows 7 instaed of xddm drivers,
after discussing the issue, we decided to limit the installation of wddm 
drivers for Windows OSes starting from Windows 8 as a fix to this issue.

Thanks,
Basil Salman

Basil Salman (1):
  Prevent installation on OSes earlier than Windows 8

 qxldod/qxldod.inx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

-- 
2.7.0.windows.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] [qxl-wddm-dod] Prevent installation on OSes earlier than Windows 8

2018-04-12 Thread Basil Salman
Limited the installation of the driver to Windows 8 and up
in order to prevent false driver installation on unsupported OSes
which lead to BSODs.

Signed-off-by: Basil Salman 
Signed-off-by: Sameeh Jubran 
---
 qxldod/qxldod.inx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/qxldod/qxldod.inx b/qxldod/qxldod.inx
index 180275d..5c08305 100755
--- a/qxldod/qxldod.inx
+++ b/qxldod/qxldod.inx
@@ -35,9 +35,9 @@ QxlDod_Files_Driver = 12
 ;
 
 [Manufacturer]
-%RHEL%=RHEL,NT$ARCH$
+%RHEL%=RHEL,NT$ARCH$.6.2
 
-[RHEL.NT$ARCH$]
+[RHEL.NT$ARCH$.6.2]
 %RHELQxl.DeviceDesc% = QxlDod_Inst, PCI\VEN_1B36_0100_11001AF4
 
 [QxlDod_Files_Driver]
-- 
2.7.0.windows.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [spice-server 1/2] cursor: Delay release of QXL guest cursor resources

2018-04-12 Thread Frediano Ziglio
> 
> On Thu, Apr 12, 2018 at 05:50:12AM -0400, Frediano Ziglio wrote:
> > > 
> > > On Wed, Apr 11, 2018 at 01:24:59PM -0400, Frediano Ziglio wrote:
> > > > > 
> > > > > There's an implicit API/ABI contract between QEMU and SPICE that
> > > > > SPICE
> > > > > will keep the guest QXL resources alive as long as QEMU can hold a
> > > > > pointer to them. This implicit contract was broken in 1c6e7cf7
> > > > > "Release
> > > > > cursor as soon as possible", causing crashes at migration time.
> > > > > While the proper fix would be in QEMU so that spice-server does not
> > > > > need
> > > > > to have that kind of knowledge regarding QEMU internal
> > > > > implementation,
> > > > > this commit reverts to the pre-1c6e7cf7 behaviour to avoid a
> > > > > regression
> > > > > while QEMU is being fixed.
> > > > > 
> > > > > This version of the fix is based on a suggestion from Frediano
> > > > > Ziglio.
> > > > > 
> > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1540919
> > > > > 
> > > > > Signed-off-by: Christophe Fergeau 
> > > > > ---
> > > > >  server/red-parse-qxl.c | 3 +++
> > > > >  server/red-parse-qxl.h | 1 +
> > > > >  server/red-worker.c| 2 +-
> > > > >  3 files changed, 5 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > > > > index d0e7eb718..ebd7dcee7 100644
> > > > > --- a/server/red-parse-qxl.c
> > > > > +++ b/server/red-parse-qxl.c
> > > > > @@ -1497,4 +1497,7 @@ void red_put_cursor_cmd(RedCursorCmd *red)
> > > > >  red_put_cursor(>u.set.shape);
> > > > >  break;
> > > > >  }
> > > > > +if (red->qxl) {
> > > > > +red_qxl_release_resource(red->qxl, red->release_info_ext);
> > > > > +}
> > > > >  }
> > > > 
> > > > Yes, fix of my code is correct.
> > > > However I cannot compile without the include!
> > > > Why is compiling for you? Maybe you have another commit in?
> > > 
> > > Yep, my bad, I did not test it independantly of other commits, I
> > > squashed the missing #include  in this commit.
> > > 
> > > Christophe
> > > 
> > 
> > Should not be #include "red-qxl.h" ?
> 
> Yes, that, which is what I had squashed in ;)
> 
> diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> index d0e7eb718..9f1303da3 100644
> --- a/server/red-parse-qxl.c
> +++ b/server/red-parse-qxl.c
> @@ -24,6 +24,7 @@
>  #include 
>  #include "spice-bitmap-utils.h"
>  #include "red-common.h"
> +#include "red-qxl.h"
>  #include "memslot.h"
>  #include "red-parse-qxl.h"
> 
> 

With that change:

Acked-by: Frediano Ziglio 

Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [spice-server 1/2] cursor: Delay release of QXL guest cursor resources

2018-04-12 Thread Christophe Fergeau
On Thu, Apr 12, 2018 at 05:50:12AM -0400, Frediano Ziglio wrote:
> > 
> > On Wed, Apr 11, 2018 at 01:24:59PM -0400, Frediano Ziglio wrote:
> > > > 
> > > > There's an implicit API/ABI contract between QEMU and SPICE that SPICE
> > > > will keep the guest QXL resources alive as long as QEMU can hold a
> > > > pointer to them. This implicit contract was broken in 1c6e7cf7 "Release
> > > > cursor as soon as possible", causing crashes at migration time.
> > > > While the proper fix would be in QEMU so that spice-server does not need
> > > > to have that kind of knowledge regarding QEMU internal implementation,
> > > > this commit reverts to the pre-1c6e7cf7 behaviour to avoid a regression
> > > > while QEMU is being fixed.
> > > > 
> > > > This version of the fix is based on a suggestion from Frediano Ziglio.
> > > > 
> > > > https://bugzilla.redhat.com/show_bug.cgi?id=1540919
> > > > 
> > > > Signed-off-by: Christophe Fergeau 
> > > > ---
> > > >  server/red-parse-qxl.c | 3 +++
> > > >  server/red-parse-qxl.h | 1 +
> > > >  server/red-worker.c| 2 +-
> > > >  3 files changed, 5 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > > > index d0e7eb718..ebd7dcee7 100644
> > > > --- a/server/red-parse-qxl.c
> > > > +++ b/server/red-parse-qxl.c
> > > > @@ -1497,4 +1497,7 @@ void red_put_cursor_cmd(RedCursorCmd *red)
> > > >  red_put_cursor(>u.set.shape);
> > > >  break;
> > > >  }
> > > > +if (red->qxl) {
> > > > +red_qxl_release_resource(red->qxl, red->release_info_ext);
> > > > +}
> > > >  }
> > > 
> > > Yes, fix of my code is correct.
> > > However I cannot compile without the include!
> > > Why is compiling for you? Maybe you have another commit in?
> > 
> > Yep, my bad, I did not test it independantly of other commits, I
> > squashed the missing #include  in this commit.
> > 
> > Christophe
> > 
> 
> Should not be #include "red-qxl.h" ?

Yes, that, which is what I had squashed in ;)

diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
index d0e7eb718..9f1303da3 100644
--- a/server/red-parse-qxl.c
+++ b/server/red-parse-qxl.c
@@ -24,6 +24,7 @@
 #include 
 #include "spice-bitmap-utils.h"
 #include "red-common.h"
+#include "red-qxl.h"
 #include "memslot.h"
 #include "red-parse-qxl.h"



signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [spice-server 1/2] cursor: Delay release of QXL guest cursor resources

2018-04-12 Thread Frediano Ziglio
> 
> On Wed, Apr 11, 2018 at 01:24:59PM -0400, Frediano Ziglio wrote:
> > > 
> > > There's an implicit API/ABI contract between QEMU and SPICE that SPICE
> > > will keep the guest QXL resources alive as long as QEMU can hold a
> > > pointer to them. This implicit contract was broken in 1c6e7cf7 "Release
> > > cursor as soon as possible", causing crashes at migration time.
> > > While the proper fix would be in QEMU so that spice-server does not need
> > > to have that kind of knowledge regarding QEMU internal implementation,
> > > this commit reverts to the pre-1c6e7cf7 behaviour to avoid a regression
> > > while QEMU is being fixed.
> > > 
> > > This version of the fix is based on a suggestion from Frediano Ziglio.
> > > 
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1540919
> > > 
> > > Signed-off-by: Christophe Fergeau 
> > > ---
> > >  server/red-parse-qxl.c | 3 +++
> > >  server/red-parse-qxl.h | 1 +
> > >  server/red-worker.c| 2 +-
> > >  3 files changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > > index d0e7eb718..ebd7dcee7 100644
> > > --- a/server/red-parse-qxl.c
> > > +++ b/server/red-parse-qxl.c
> > > @@ -1497,4 +1497,7 @@ void red_put_cursor_cmd(RedCursorCmd *red)
> > >  red_put_cursor(>u.set.shape);
> > >  break;
> > >  }
> > > +if (red->qxl) {
> > > +red_qxl_release_resource(red->qxl, red->release_info_ext);
> > > +}
> > >  }
> > 
> > Yes, fix of my code is correct.
> > However I cannot compile without the include!
> > Why is compiling for you? Maybe you have another commit in?
> 
> Yep, my bad, I did not test it independantly of other commits, I
> squashed the missing #include  in this commit.
> 
> Christophe
> 

Should not be #include "red-qxl.h" ?

Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [spice-server 2/2] cursor: Rename cursor_marshall to red_marshall_cursor_command

2018-04-12 Thread Christophe Fergeau
On Wed, Apr 11, 2018 at 01:16:57PM -0400, Frediano Ziglio wrote:
> > 
> > The name is more consistent with red_marshall_cursor_init.
> > ---
> >  server/cursor-channel.c | 8 
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> 
> Why command (so red_marshall_cursor) ?
> The item is RED_PIPE_ITEM_TYPE_CURSOR.

I find red_marshall_cursor misleading, especially with
red_marshall_cursor_init. It might make sense it this was always setting
the cursor shape, but this is not even the case, this might cause cursor
to move, or to be hidden,  This pipe item really wraps a
RedCursorCommand. I can rename it too.

Christophe

> 
> > diff --git a/server/cursor-channel.c b/server/cursor-channel.c
> > index 522261e3f..a549c5fe0 100644
> > --- a/server/cursor-channel.c
> > +++ b/server/cursor-channel.c
> > @@ -142,9 +142,9 @@ static void red_marshall_cursor_init(CursorChannelClient
> > *ccc, SpiceMarshaller *
> >  spice_marshall_msg_cursor_init(base_marshaller, );
> >  }
> >  
> > -static void cursor_marshall(CursorChannelClient *ccc,
> > -SpiceMarshaller *m,
> > -RedCursorPipeItem *cursor_pipe_item)
> > +static void red_marshall_cursor_command(CursorChannelClient *ccc,
> > +SpiceMarshaller *m,
> > +RedCursorPipeItem 
> > *cursor_pipe_item)
> >  {
> >  RedChannelClient *rcc = RED_CHANNEL_CLIENT(ccc);
> >  CursorChannel *cursor_channel =
> >  CURSOR_CHANNEL(red_channel_client_get_channel(rcc));
> > @@ -212,7 +212,7 @@ static void cursor_channel_send_item(RedChannelClient
> > *rcc, RedPipeItem *pipe_it
> >  
> >  switch (pipe_item->type) {
> >  case RED_PIPE_ITEM_TYPE_CURSOR:
> > -cursor_marshall(ccc, m, SPICE_UPCAST(RedCursorPipeItem, 
> > pipe_item));
> > +red_marshall_cursor_command(ccc, m, SPICE_UPCAST(RedCursorPipeItem,
> > pipe_item));
> >  break;
> >  case RED_PIPE_ITEM_TYPE_INVAL_ONE:
> >  red_marshall_inval(rcc, m, SPICE_CONTAINEROF(pipe_item,
> >  RedCacheItem, u.pipe_data));
> 
> Frediano
> ___
> Spice-devel mailing list
> Spice-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


Re: [Spice-devel] [spice-server 1/2] cursor: Delay release of QXL guest cursor resources

2018-04-12 Thread Christophe Fergeau
On Wed, Apr 11, 2018 at 01:24:59PM -0400, Frediano Ziglio wrote:
> > 
> > There's an implicit API/ABI contract between QEMU and SPICE that SPICE
> > will keep the guest QXL resources alive as long as QEMU can hold a
> > pointer to them. This implicit contract was broken in 1c6e7cf7 "Release
> > cursor as soon as possible", causing crashes at migration time.
> > While the proper fix would be in QEMU so that spice-server does not need
> > to have that kind of knowledge regarding QEMU internal implementation,
> > this commit reverts to the pre-1c6e7cf7 behaviour to avoid a regression
> > while QEMU is being fixed.
> > 
> > This version of the fix is based on a suggestion from Frediano Ziglio.
> > 
> > https://bugzilla.redhat.com/show_bug.cgi?id=1540919
> > 
> > Signed-off-by: Christophe Fergeau 
> > ---
> >  server/red-parse-qxl.c | 3 +++
> >  server/red-parse-qxl.h | 1 +
> >  server/red-worker.c| 2 +-
> >  3 files changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > index d0e7eb718..ebd7dcee7 100644
> > --- a/server/red-parse-qxl.c
> > +++ b/server/red-parse-qxl.c
> > @@ -1497,4 +1497,7 @@ void red_put_cursor_cmd(RedCursorCmd *red)
> >  red_put_cursor(>u.set.shape);
> >  break;
> >  }
> > +if (red->qxl) {
> > +red_qxl_release_resource(red->qxl, red->release_info_ext);
> > +}
> >  }
> 
> Yes, fix of my code is correct.
> However I cannot compile without the include!
> Why is compiling for you? Maybe you have another commit in?

Yep, my bad, I did not test it independantly of other commits, I
squashed the missing #include  in this commit.

Christophe


signature.asc
Description: PGP signature
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel


[Spice-devel] not clear how to use streaming agent

2018-04-12 Thread 孙得霖
hi,
I use spice for remote view, I want to captures the guest video output, 
encodes it and send through, so I choose streaming agent, how to build and run 
it is not clear, can you help me?


1.host environment and Software version:
centOS(Mini install)
GVT-g kernel:  https://github.com/intel/gvt-linux/  (branch: topic/dmabuf)
QEMU:  https://github.com/intel/igvtg-qemu  (branch: qa/dma_buf)
streming agent:https://gitlab.com/spice/spice-streaming-agent
spice-server   version:0.13.3
spice-protocol version:0.12.12


2.build info
kernel:
make -j 8
make modules_install && make install
reboot


qemu:
./configure --prefix=/usr --enable-kvm --disable-xen --enable-debug-info 
--enable-debug --enable-sdl --enable-vhost-net --enable-spice 
--disable-debug-tcg --enable-numa --enable-libusb --enable-curl 
--enable-usb-redir --enable-linux-aio --target-list=x86_64-softmmu --enable-gtk 
--with-gtkabi=3.0
make -j 8
cd roms/seabios
make -j 8
cd -
make install
cp roms/seabios/out/bios.bin /usr/bin/bios.bin


spice-protocol:
./configure --prefix=/usr
make -j 8
make install


spice-service:
./configure  --prefix=/usr --enable-manual=no --disable-silent-rules 
--disable-smartcard --disable-celt051 --enable-client CFLAGS="-g -O0" 
CXXFLAGS="-g -O0"
make -j 8
make install


streming agent
./autogen.sh
make -j 8
make install


3.run qemu
/usr/bin/qemu-system-x86_64 \
-m 8192 \
-smp 4,sockets=1,cores=4,threads=1 \
-M pc \
-name win71 \
-hda /Image/vm/win7_base.img \
-bios /usr/bin/bios.bin -enable-kvm \
-k en-us \
-vga none \
-display egl-headless \
-spice disable-ticketing,port=6901,streaming-video=off \
-machine kernel_irqchip=on,usb=on \
-global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 \
-cpu host -device usb-tablet \
-device 
vfio-pci,sysfsdev=/sys/bus/pci/devices/:00:02.0/5b8d581a-2dc9-11e8-8238-000906258002,x-display=on,x-igd-opregion=on
-device 
virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel1,id=channel1,name=org.spice-space.stream.0
 -chardev spiceport,name=org.spice-space.stream.0,id=charchannel1


questions:
I am not clear How to use streaming agent and validate it, can you help me?


thank you!___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel