All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC] hw/qxl: three more unlocks
@ 2011-01-27 12:41 Alon Levy
  0 siblings, 0 replies; only message in thread
From: Alon Levy @ 2011-01-27 12:41 UTC (permalink / raw)
  To: qemu-devel

---
Basically, anything that does a:
 kvm_main_cpu
 io exit
 write to red_worker pipe
 wait on read from red_worker pipe
should relingquish the lock during that wait, no?
 
Anyway, I had a lockup, saw it was in this situation with gdb, didn't record
which function exactly, and it was solved by adding these three locks (so one
of them helped..)

 hw/qxl.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/hw/qxl.c b/hw/qxl.c
index 00c31c7..6ebb634 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -803,14 +803,18 @@ static void qxl_add_memslot(PCIQXLDevice *d, uint32_t slot_id, uint64_t delta)
 static void qxl_del_memslot(PCIQXLDevice *d, uint32_t slot_id)
 {
     dprint(d, 1, "%s: slot %d\n", __FUNCTION__, slot_id);
+    qxl_unlock_iothread(&d->ssd);
     d->ssd.worker->del_memslot(d->ssd.worker, MEMSLOT_GROUP_HOST, slot_id);
+    qxl_lock_iothread(&d->ssd);
     d->guest_slots[slot_id].active = 0;
 }
 
 static void qxl_reset_memslots(PCIQXLDevice *d)
 {
     dprint(d, 1, "%s:\n", __FUNCTION__);
+    qxl_unlock_iothread(&d->ssd);
     d->ssd.worker->reset_memslots(d->ssd.worker);
+    qxl_lock_iothread(&d->ssd);
     memset(&d->guest_slots, 0, sizeof(d->guest_slots));
 }
 
@@ -874,7 +878,9 @@ static void qxl_create_guest_primary(PCIQXLDevice *qxl, int loadvm)
 
     qxl->mode = QXL_MODE_NATIVE;
     qxl->cmdflags = 0;
+    qxl_unlock_iothread(&qxl->ssd);
     qxl->ssd.worker->create_primary_surface(qxl->ssd.worker, 0, &surface);
+    qxl_lock_iothread(&qxl->ssd);
 
     /* for local rendering */
     qxl_render_resize(qxl);
-- 
1.7.3.5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-01-27 12:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-27 12:41 [Qemu-devel] [RFC] hw/qxl: three more unlocks Alon Levy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.