From b01e1e9a0d3e77e91dba61d90bed4ef6252e5ae0 Mon Sep 17 00:00:00 2001 From: Thierry Herbelot Date: Fri, 23 Apr 2021 14:25:15 +0200 Subject: [PATCH] net/virtio: fix kernel set memtable for multi-queue device Restore the original code, where VHOST_SET_MEM_TABLE is applied to all vhostfds of the device. Fixes: 539d910c9c76 ("net/virtio: add virtio-user memory tables ops") Cc: stable@dpdk.org Signed-off-by: Thierry Herbelot Reviewed-by: Maxime Coquelin --- drivers/net/virtio/virtio_user/vhost_kernel.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/virtio/virtio_user/vhost_kernel.c b/drivers/net/virtio/virtio_user/vhost_kernel.c index 58e66bb7b4..ad46f10a93 100644 --- a/drivers/net/virtio/virtio_user/vhost_kernel.c +++ b/drivers/net/virtio/virtio_user/vhost_kernel.c @@ -206,6 +206,7 @@ add_memseg_list(const struct rte_memseg_list *msl, void *arg) static int vhost_kernel_set_memory_table(struct virtio_user_dev *dev) { + uint32_t i; struct vhost_kernel_data *data = dev->backend_data; struct vhost_memory_kernel *vm; int ret; @@ -227,9 +228,14 @@ vhost_kernel_set_memory_table(struct virtio_user_dev *dev) if (ret < 0) goto err_free; - ret = vhost_kernel_ioctl(data->vhostfds[0], VHOST_SET_MEM_TABLE, vm); - if (ret < 0) - goto err_free; + for (i = 0; i < dev->max_queue_pairs; ++i) { + if (data->vhostfds[i] < 0) + continue; + + ret = vhost_kernel_ioctl(data->vhostfds[i], VHOST_SET_MEM_TABLE, vm); + if (ret < 0) + goto err_free; + } free(vm); -- 2.20.1