[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of in
From: |
Marcelo Tosatti |
Subject: |
Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop |
Date: |
Thu, 28 Jun 2012 22:45:04 -0300 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Jun 28, 2012 at 09:10:39AM -0500, Anthony Liguori wrote:
> >
> >1. read_lock(memmap_lock)
> >2. MemoryRegionSection mrs = lookup(addr)
> >3. qom_ref(mrs.mr->dev)
> >4. read_unlock(memmap_lock)
> >
> >5. mutex_lock(dev->lock)
> >6. dispatch(&mrs, addr, data, size)
> >7. mutex_unlock(dev->lock)
>
> Just a detail, I don't think we should acquire a device specific
> lock in global code. Rather, I think we should acquire the global
> lock before dispatch unless a MemoryRegion is marked as being
> unlocked.
"The basic plan is introduce granular locking starting at the KVM
dispatch level until we can get to MemoryRegion dispatch. We'll then
have some way to indicate that a MemoryRegion's callbacks should be
invoked without holding the qemu global mutex."
Before that is possible, the callback must not make use of data
structures currently protected by qemu_global_mutex, such as
timers, interrupts (that is, you would have to split locks
for each individual service invoked from inside callbacks,
which is a recipe for disaster).
With lock_device() below you can have
mutex_lock(dev->lock)
device specific work
mutex_lock(qemu_global_mutex)
raise irq, send packet, etc
mutex_unlock(qemu_global_mutex)
mutex_unlock(dev->lock)
and iothread doing the select() pseudocode in the previous email.
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, (continued)
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Avi Kivity, 2012/06/27
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Jan Kiszka, 2012/06/27
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Anthony Liguori, 2012/06/28
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Avi Kivity, 2012/06/28
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop,
Marcelo Tosatti <=
- Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Marcelo Tosatti, 2012/06/28
Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop, Anthony Liguori, 2012/06/22