Re: [PATCHv2] kvm: remove in_range and switch to rwsem for iobus

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

 



On 06/29/2009 12:23 PM, Michael S. Tsirkin wrote:
On Mon, Jun 29, 2009 at 11:37:00AM +0300, Avi Kivity wrote:
On 06/28/2009 10:34 PM, Michael S. Tsirkin wrote:
This changes bus accesses to use high-level kvm_io_bus_read/kvm_io_bus_write
functions, which utilize read/write semaphore intead of mutex.  in_range now
becomes unused so it is removed from device ops in favor of read/write
callbacks performing range checks internally.

This allows aliasing (mostly for in-kernel virtio), as well as better error
handling by making it possible to pass errors up to userspace. And it's enough
to look at the diffstat to see that it's a better API anyway.

While we are at it, document locking rules for kvm_io_device_ops.

Note: since the use of the new bus_lock is localized to a small number of
places, it will be easy to switch to srcu in the future if we so desire.

Looks good. But please split into a locking change patch and an API
change patch (in whatever order makes more sense).

I think you can reuse slots_lock instead of adding a new lock. IIRC
slots_lock is already taken for read everywhere, so you only need to
take it for write when registering things.

IMO this will make it harder to convert to rcu down the line.
As it is we just grep for bus_lock and replace with rcu.
While possibly slots_lock can be converted to rcu as well,
let's do it one thing at a time.

We can convert it to rcu indepenently of other things protected by slots_lock; no need to do everything at the same time.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux