[PATCH xf86-qxl 1/2] Assert on QXL_INTERRUPT_ERROR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Marc-Andre Lureau <marcandre.lureau@xxxxxxxxxx>

When qemu qxl device reaches a guest bug, it might set the
QXL_INTERRUPT_ERROR interrupt flag, and stops processing guest
commands. Therefore, it makes sense to check that flag in the guest and
quit, instead of running in infinite loop in X and consuming CPU.

Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=1151559
---
 src/qxl_io.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/qxl_io.c b/src/qxl_io.c
index 8fa90b6..15fd678 100644
--- a/src/qxl_io.c
+++ b/src/qxl_io.c
@@ -43,9 +43,12 @@ qxl_wait_for_io_command (qxl_screen_t *qxl)
 
     ram_header = (void *)((unsigned long)qxl->ram + qxl->rom->ram_header_offset);
 
-    while (!(ram_header->int_pending & QXL_INTERRUPT_IO_CMD))
+    while (!(ram_header->int_pending &
+             (QXL_INTERRUPT_IO_CMD | QXL_INTERRUPT_ERROR)))
 	usleep (1);
 
+    assert(!(ram_header->int_pending & QXL_INTERRUPT_ERROR));
+
     ram_header->int_pending &= ~QXL_INTERRUPT_IO_CMD;
 }
 
-- 
1.9.3

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]