Skip to content

Commit 460f7ce

Browse files
jasowangmstsirkin
authored andcommitted
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent b0bd82b commit 460f7ce

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

drivers/vhost/net.c

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,21 +1615,6 @@ static long vhost_net_reset_owner(struct vhost_net *n)
16151615
return err;
16161616
}
16171617

1618-
static int vhost_net_set_backend_features(struct vhost_net *n, u64 features)
1619-
{
1620-
int i;
1621-
1622-
mutex_lock(&n->dev.mutex);
1623-
for (i = 0; i < VHOST_NET_VQ_MAX; ++i) {
1624-
mutex_lock(&n->vqs[i].vq.mutex);
1625-
n->vqs[i].vq.acked_backend_features = features;
1626-
mutex_unlock(&n->vqs[i].vq.mutex);
1627-
}
1628-
mutex_unlock(&n->dev.mutex);
1629-
1630-
return 0;
1631-
}
1632-
16331618
static int vhost_net_set_features(struct vhost_net *n, u64 features)
16341619
{
16351620
size_t vhost_hlen, sock_hlen, hdr_len;
@@ -1730,7 +1715,8 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
17301715
return -EFAULT;
17311716
if (features & ~VHOST_NET_BACKEND_FEATURES)
17321717
return -EOPNOTSUPP;
1733-
return vhost_net_set_backend_features(n, features);
1718+
vhost_set_backend_features(&n->dev, features);
1719+
return 0;
17341720
case VHOST_RESET_OWNER:
17351721
return vhost_net_reset_owner(n);
17361722
case VHOST_SET_OWNER:

drivers/vhost/vhost.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2591,6 +2591,21 @@ struct vhost_msg_node *vhost_dequeue_msg(struct vhost_dev *dev,
25912591
}
25922592
EXPORT_SYMBOL_GPL(vhost_dequeue_msg);
25932593

2594+
void vhost_set_backend_features(struct vhost_dev *dev, u64 features)
2595+
{
2596+
struct vhost_virtqueue *vq;
2597+
int i;
2598+
2599+
mutex_lock(&dev->mutex);
2600+
for (i = 0; i < dev->nvqs; ++i) {
2601+
vq = dev->vqs[i];
2602+
mutex_lock(&vq->mutex);
2603+
vq->acked_backend_features = features;
2604+
mutex_unlock(&vq->mutex);
2605+
}
2606+
mutex_unlock(&dev->mutex);
2607+
}
2608+
EXPORT_SYMBOL_GPL(vhost_set_backend_features);
25942609

25952610
static int __init vhost_init(void)
25962611
{

drivers/vhost/vhost.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ void vhost_enqueue_msg(struct vhost_dev *dev,
214214
struct vhost_msg_node *node);
215215
struct vhost_msg_node *vhost_dequeue_msg(struct vhost_dev *dev,
216216
struct list_head *head);
217+
void vhost_set_backend_features(struct vhost_dev *dev, u64 features);
218+
217219
__poll_t vhost_chr_poll(struct file *file, struct vhost_dev *dev,
218220
poll_table *wait);
219221
ssize_t vhost_chr_read_iter(struct vhost_dev *dev, struct iov_iter *to,

0 commit comments

Comments
 (0)