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

Christophe Fergeau cfergeau at redhat.com
Thu Apr 12 10:01:31 UTC 2018


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 <cfergeau at redhat.com>
> > > > ---
> > > >  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(&red->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 <red-qxl.h> 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 <common/lz_common.h>
 #include "spice-bitmap-utils.h"
 #include "red-common.h"
+#include "red-qxl.h"
 #include "memslot.h"
 #include "red-parse-qxl.h"

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180412/e9aff399/attachment.sig>


More information about the Spice-devel mailing list