qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: sandmann@cs.au.dk (Søren Sandmann)
To: Gerd Hoffmann <kraxel@redhat.com>
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 23:05:57 +0200	[thread overview]
Message-ID: <ye8sjb5be8a.fsf@llama11.cs.au.dk> (raw)
In-Reply-To: <503DAFEF.4040701@redhat.com> (Gerd Hoffmann's message of "Wed, 29 Aug 2012 08:00:15 +0200")

Gerd Hoffmann <kraxel@redhat.com> writes:

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

I think the same scheme as for commands could be used:

  - When a new client connects, if it doesn't understand a8, then the
    server won't send it any a8 surfaces.

  - The guest driver is expected to not refer to any such surfaces once
    it sees the change in capability bits, and may want to delete them.

The race condition is handled by the server processing all commands
after changing the capability bits, but before forwarding any commands
to the new client.

If I don't hear any objections to the above, I'll update the patches as
follows:

        - When a new client connects, the capability bits are changed,
          followed by a processing of all commands in the ring. At this
          point new commands may be forwarded.

        - Add ifdefs to allow qemu to compile against older versions of
          spice.

        - Use 4 for the PCI revision instead of 5

I'll drop the NUM_SURFACES change for now. The guest driver probably
need the ability to swap pixmaps in and out of video memory in any case,
since X clients sometimes leak pixmaps and since no fixed number of
surfaces is likely to be enough for all cases.


Søren

  reply	other threads:[~2012-08-29 21:06 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
2012-08-29 21:05         ` Søren Sandmann [this message]
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=ye8sjb5be8a.fsf@llama11.cs.au.dk \
    --to=sandmann@cs.au.dk \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --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).