From: Gerd Hoffmann <kraxel@redhat.com>
To: "Søren Sandmann" <sandmann@cs.au.dk>
Cc: qemu-devel@nongnu.org, spice-devel@freedesktop.org,
"Søren Sandmann Pedersen" <ssp@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] Add new client_present and client capabilities fields to QXLRom
Date: Wed, 29 Aug 2012 08:00:15 +0200 [thread overview]
Message-ID: <503DAFEF.4040701@redhat.com> (raw)
In-Reply-To: <ye8wr0iecpl.fsf@llama11.cs.au.dk>
On 08/29/12 02:58, Søren Sandmann wrote:
> Gerd Hoffmann <kraxel@redhat.com> writes:
>
>> On 08/27/12 19:20, Søren Sandmann Pedersen wrote:
>>> From: Søren Sandmann Pedersen <ssp@redhat.com>
>>>
>>> The client_present field is a byte that is set of non-zero when a
>>> client is connected and to zero when no client is connected.
>>>
>>> The client_capabilities[58] array contains 464 bits that indicate the
>>> capabilities of the client.
>>
>> What is supposed to happen in case multiple clients are connected?
>
> Is this case supported at all?
There is code for it, although disabled by default and nobody actively
working in it as far I know. We should at least have a plan how to
handle that situation ...
> If it is, I'd say that the guest should not be aware of it and the bits
> advertise should be interpreted as "these are the capabilities that
> spice-server will marshall on to the clients that are
> connected". Presumably spice-server would then set the bit vector to the
> intersection of all the clients.
Makes sense.
>> How do you handle the race conditions, especially on capability
>> downgrade? There might be not-yet processed commands in the command
>> queue which the client is unable to handle, or existing surfaces using
>> formats the client doesn't understand ...
>
> Good question.
>
> I don't know of a good way to deal with the situation where the new
> client is unable to handle existing surfaces.
We need a sensible solution here. If we can't handle capability
downgrade at runtime the capability negotiation between guest and client
doesn't make sense in the first place.
Failing that we can add a a8 switch to qxl. When enabled qemu asks
spice-server to enable a8, which in turn will raise the display channel
minor version, basically requiring an updated spice client to connect.
With a8 disabled old clients can connect too.
> For commands, would it work for spice-server to just process everything
> in the command ring after changing the capability bits (ie., in possibly
> brief moment before a new client connects)? It seems that would be a
> good thing to do even without capability bits.
spice server could process (aka server-side rendering) all outstanding
commands after updating capability bits and before starting to forward
commands to the new client. Yes, that should work.
cheers,
Gerd
next prev parent reply other threads:[~2012-08-29 6:00 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-27 17:20 [Qemu-devel] Add ability to advertise client capabilities to QXL device Søren Sandmann Pedersen
2012-08-27 17:20 ` [Qemu-devel] [PATCH] Add new client_present and client capabilities fields to QXLRom Søren Sandmann Pedersen
2012-08-28 6:15 ` Gerd Hoffmann
2012-08-29 0:58 ` Søren Sandmann
2012-08-29 6:00 ` Gerd Hoffmann [this message]
2012-08-29 21:05 ` Søren Sandmann
2012-08-29 10:14 ` [Qemu-devel] [Spice-devel] " Alon Levy
2012-08-29 20:51 ` Søren Sandmann
2012-08-30 5:34 ` Gerd Hoffmann
2012-08-30 16:03 ` Søren Sandmann
2012-08-31 7:32 ` Gerd Hoffmann
2012-09-02 21:35 ` [Qemu-devel] New patches to add capabilities to spice and qxl Søren Sandmann Pedersen
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 spice-protocol 1/2] Add A8 surface capability Søren Sandmann Pedersen
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 spice-protocol 2/2] Add new client_present and client capabilities fields to QXLRom Søren Sandmann Pedersen
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 spice-gtk] Advertise SPICE_DISPLAY_CAP_A8_SURFACE Søren Sandmann Pedersen
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 spice 1/2] Set a8 capability in the QXL device if supported by the client Søren Sandmann Pedersen
2012-09-03 7:34 ` Alon Levy
2012-09-03 17:33 ` Søren Sandmann
2012-09-03 17:49 ` Søren Sandmann
2012-09-03 17:53 ` [Qemu-devel] [PATCH 1/5] client: Advertise A8_SURFACE capability Søren Sandmann
2012-09-03 17:53 ` [Qemu-devel] [PATCH 2/5] Add new set_client_capabilities() interface to QXLInstance Søren Sandmann
2012-09-03 17:53 ` [Qemu-devel] [PATCH 3/5] Process outstanding commands in the ring after changing capability bits Søren Sandmann
2012-09-03 18:31 ` [Qemu-devel] [Spice-devel] " Alon Levy
2012-09-03 17:53 ` [Qemu-devel] [PATCH 4/5] Set a8 capability in the QXL device if supported by the client Søren Sandmann
2012-09-03 17:53 ` [Qemu-devel] [PATCH 5/5] Bump spice.h version number to 0.11.4 Søren Sandmann
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 spice 2/2] " Søren Sandmann Pedersen
2012-09-02 21:35 ` [Qemu-devel] [PATCH-v2 qemu] qxl: Add set_client_capabilities() interface to QXLInterface Søren Sandmann Pedersen
2012-09-03 17:36 ` [Qemu-devel] [Spice-devel] " Søren Sandmann
2012-09-03 17:40 ` [Qemu-devel] [PATCH] " Søren Sandmann
2012-09-03 18:21 ` Alon Levy
2012-09-04 10:12 ` [Qemu-devel] [PATCH-v2 qemu] " Gerd Hoffmann
2012-09-04 14:14 ` [Qemu-devel] [PATCH 1/2] " Søren Sandmann
2012-09-04 14:14 ` [Qemu-devel] [PATCH 2/2] Remove #ifdef QXL_COMMAND_FLAG_COMPAT_16BPP Søren Sandmann
2012-09-04 14:46 ` [Qemu-devel] [PATCH 1/2] qxl: Add set_client_capabilities() interface to QXLInterface Gerd Hoffmann
2012-08-27 17:20 ` [Qemu-devel] [PATCH] Add new set_client_capabilities() interface to QXLInstance Søren Sandmann Pedersen
2012-08-27 17:20 ` [Qemu-devel] [PATCH] qxl: Add set_client_capabilities() interface to QXLInterface Søren Sandmann Pedersen
2012-08-28 6:19 ` Gerd Hoffmann
2012-08-27 17:20 ` [Qemu-devel] Add ability to advertise client capabilities to QXL device Søren Sandmann Pedersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=503DAFEF.4040701@redhat.com \
--to=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sandmann@cs.au.dk \
--cc=spice-devel@freedesktop.org \
--cc=ssp@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).