qxl: keep going if reaching guest bug on empty area
commit9e5a25f1c209ff51e4b65124a3b76dd3f1b0fb49
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Fri, 10 Oct 2014 17:05:11 +0000 (10 19:05 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 15 Oct 2014 09:08:34 +0000 (15 11:08 +0200)
tree7ac09b2dd38a60ca955e481dfd8e54b02e495f5f
parentb1d28ec6a7dbdaadda39d29322f0de694aeb0b74
qxl: keep going if reaching guest bug on empty area

Xorg server hangs when using xfig and typing a text with space:
 #0  qxl_wait_for_io_command (qxl=<value optimized out>) at qxl_io.c:47
 #1  0x00007f826a49a299 in qxl_download_box (surface=0x221d030, x1=231, y1=259,
     x2=<value optimized out>, y2=<value optimized out>) at qxl_surface.c:143

       while (!(ram_header->int_pending & QXL_INTERRUPT_IO_CMD))
         usleep (1);

The QXL driver is calling QXL_IO_UPDATE_AREA with an empty area. This
is a guest bug. The call is async and no ack is sent back on guest
bug, so the X server will hang. The driver should be improved to avoid
this situation and also to abort on QXL_INTERRUPT_ERROR. This will be
a different patch series for the driver. However, it is simple enough
to keep qemu running on empty areas update, which is what this patch
provides.

https://bugzilla.redhat.com/show_bug.cgi?id=1151363

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/display/qxl.c