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

From: Avi Kivity
Date: Mon Jun 29 2009 - 05:43:46 EST


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 linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/