vhost: generialize backend features setting/getting
Move the backend features setting/getting from net.c to vhost.c to be reused by vhost-vdpa. Signed-off-by: Jason Wang <jasowang@redhat.com> Link: https://lore.kernel.org/r/20200804162048.22587-3-eli@mellanox.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Родитель
b0bd82bf72
Коммит
460f7ce19f
|
@ -1615,21 +1615,6 @@ done:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int vhost_net_set_backend_features(struct vhost_net *n, u64 features)
|
||||
{
|
||||
int i;
|
||||
|
||||
mutex_lock(&n->dev.mutex);
|
||||
for (i = 0; i < VHOST_NET_VQ_MAX; ++i) {
|
||||
mutex_lock(&n->vqs[i].vq.mutex);
|
||||
n->vqs[i].vq.acked_backend_features = features;
|
||||
mutex_unlock(&n->vqs[i].vq.mutex);
|
||||
}
|
||||
mutex_unlock(&n->dev.mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vhost_net_set_features(struct vhost_net *n, u64 features)
|
||||
{
|
||||
size_t vhost_hlen, sock_hlen, hdr_len;
|
||||
|
@ -1730,7 +1715,8 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
|
|||
return -EFAULT;
|
||||
if (features & ~VHOST_NET_BACKEND_FEATURES)
|
||||
return -EOPNOTSUPP;
|
||||
return vhost_net_set_backend_features(n, features);
|
||||
vhost_set_backend_features(&n->dev, features);
|
||||
return 0;
|
||||
case VHOST_RESET_OWNER:
|
||||
return vhost_net_reset_owner(n);
|
||||
case VHOST_SET_OWNER:
|
||||
|
|
|
@ -2591,6 +2591,21 @@ struct vhost_msg_node *vhost_dequeue_msg(struct vhost_dev *dev,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(vhost_dequeue_msg);
|
||||
|
||||
void vhost_set_backend_features(struct vhost_dev *dev, u64 features)
|
||||
{
|
||||
struct vhost_virtqueue *vq;
|
||||
int i;
|
||||
|
||||
mutex_lock(&dev->mutex);
|
||||
for (i = 0; i < dev->nvqs; ++i) {
|
||||
vq = dev->vqs[i];
|
||||
mutex_lock(&vq->mutex);
|
||||
vq->acked_backend_features = features;
|
||||
mutex_unlock(&vq->mutex);
|
||||
}
|
||||
mutex_unlock(&dev->mutex);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vhost_set_backend_features);
|
||||
|
||||
static int __init vhost_init(void)
|
||||
{
|
||||
|
|
|
@ -214,6 +214,8 @@ void vhost_enqueue_msg(struct vhost_dev *dev,
|
|||
struct vhost_msg_node *node);
|
||||
struct vhost_msg_node *vhost_dequeue_msg(struct vhost_dev *dev,
|
||||
struct list_head *head);
|
||||
void vhost_set_backend_features(struct vhost_dev *dev, u64 features);
|
||||
|
||||
__poll_t vhost_chr_poll(struct file *file, struct vhost_dev *dev,
|
||||
poll_table *wait);
|
||||
ssize_t vhost_chr_read_iter(struct vhost_dev *dev, struct iov_iter *to,
|
||||
|
|
Загрузка…
Ссылка в новой задаче