On 08/31/2011 01:23 PM, Gerd Hoffmann wrote:
On 08/31/11 10:20, Yonit Halperin wrote:
if qxl_send_events was called from spice server context, and then
migration had completed before a call to pipe_read, the target
guest qxl driver didn't get the interrupt. In addition,
qxl_send_events ignored further interrupts of the same kind, since
ram->int_pending was set. As a result, the guest driver was stacked
or very slow (when the waiting for the interrupt was with timeout).
- if (!running&& qxl->mode == QXL_MODE_NATIVE) {
+ if (running) {
+ if (qxl->ram->int_pending) {
+ /*
+ * if qxl_send_events was called from spice server context before
+ * migration ended, qxl_set_irq for these events might not have been
called
+ */
+ qxl_set_irq(qxl);
+ }
You can call qxl_set_irq unconditionally,
it checks for int_pending anyway.
Hi,
qxl_set_irq doesn't test int_pending, but it will call qemu_set_irq
with level=0 if !int_pending.
cheers,
Gerd