virtio_vdpa: create vqs with the actual size
authorZhu Lingshan <lingshan.zhu@intel.com>
Fri, 2 Feb 2024 16:39:03 +0000 (00:39 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 19 Mar 2024 06:45:50 +0000 (02:45 -0400)
The size of a virtqueue is a per vq configuration,
this commit allows virtio_vdpa to create
virtqueues with the actual size of a specific
vq size that supported by the backend device.

Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com>
Message-Id: <20240202163905.8834-9-lingshan.zhu@intel.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio_vdpa.c

index 8d63e59..e803db0 100644 (file)
@@ -183,8 +183,11 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, unsigned int index,
        info = kmalloc(sizeof(*info), GFP_KERNEL);
        if (!info)
                return ERR_PTR(-ENOMEM);
+       if (ops->get_vq_size)
+               max_num = ops->get_vq_size(vdpa, index);
+       else
+               max_num = ops->get_vq_num_max(vdpa);
 
-       max_num = ops->get_vq_num_max(vdpa);
        if (max_num == 0) {
                err = -ENOENT;
                goto error_new_virtqueue;