]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/vhost/vhost.h
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / vhost / vhost.h
index 35eeb2a1badaf8e90e2af8215ff376b23a2e9853..3eda654b8f5a0d8191060f553f3687983505edbe 100644 (file)
@@ -104,20 +104,18 @@ struct vhost_virtqueue {
        struct iovec *indirect;
        struct vring_used_elem *heads;
        /* Protected by virtqueue mutex. */
+       struct vhost_memory *memory;
        void *private_data;
+       unsigned acked_features;
        /* Log write descriptors */
        void __user *log_base;
        struct vhost_log *log;
 };
 
 struct vhost_dev {
-       /* Readers use RCU to access memory table pointer
-        * log base pointer and features.
-        * Writers use mutex below.*/
-       struct vhost_memory __rcu *memory;
+       struct vhost_memory *memory;
        struct mm_struct *mm;
        struct mutex mutex;
-       unsigned acked_features;
        struct vhost_virtqueue **vqs;
        int nvqs;
        struct file *log_file;
@@ -140,7 +138,7 @@ long vhost_vring_ioctl(struct vhost_dev *d, int ioctl, void __user *argp);
 int vhost_vq_access_ok(struct vhost_virtqueue *vq);
 int vhost_log_access_ok(struct vhost_dev *);
 
-int vhost_get_vq_desc(struct vhost_dev *, struct vhost_virtqueue *,
+int vhost_get_vq_desc(struct vhost_virtqueue *,
                      struct iovec iov[], unsigned int iov_count,
                      unsigned int *out_num, unsigned int *in_num,
                      struct vhost_log *log, unsigned int *log_num);
@@ -174,13 +172,8 @@ enum {
                         (1ULL << VHOST_F_LOG_ALL),
 };
 
-static inline int vhost_has_feature(struct vhost_dev *dev, int bit)
+static inline int vhost_has_feature(struct vhost_virtqueue *vq, int bit)
 {
-       unsigned acked_features;
-
-       /* TODO: check that we are running from vhost_worker or dev mutex is
-        * held? */
-       acked_features = rcu_dereference_index_check(dev->acked_features, 1);
-       return acked_features & (1 << bit);
+       return vq->acked_features & (1 << bit);
 }
 #endif