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_writeLooks good. But please split into a locking change patch and an API
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.
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.