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: 539d910c9c ("net/virtio: add virtio-user memory tables ops")
Cc: stable@dpdk.org

Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
Thierry Herbelot 2021-04-23 14:25:15 +02:00 committed by Chenbo Xia
parent 91d7e76462
commit b01e1e9a0d

View File

@ -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);