vdpa: support exposing the count of vqs to userspace
authorLongpeng <longpeng2@huawei.com>
Tue, 15 Mar 2022 03:25:53 +0000 (11:25 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 28 Mar 2022 20:53:00 +0000 (16:53 -0400)
- GET_VQS_COUNT: the count of virtqueues that exposed

Signed-off-by: Longpeng <longpeng2@huawei.com>
Link: https://lore.kernel.org/r/20220315032553.455-4-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Longpeng &lt;<a href="mailto:longpeng2@huawei.com" target="_blank">longpeng2@huawei.com</a>&gt;<br>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
drivers/vhost/vdpa.c
include/uapi/linux/vhost.h

index 3b7fc2f..4c2f0bd 100644 (file)
@@ -373,6 +373,16 @@ static long vhost_vdpa_get_config_size(struct vhost_vdpa *v, u32 __user *argp)
        return 0;
 }
 
+static long vhost_vdpa_get_vqs_count(struct vhost_vdpa *v, u32 __user *argp)
+{
+       struct vdpa_device *vdpa = v->vdpa;
+
+       if (copy_to_user(argp, &vdpa->nvqs, sizeof(vdpa->nvqs)))
+               return -EFAULT;
+
+       return 0;
+}
+
 static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
                                   void __user *argp)
 {
@@ -513,6 +523,9 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep,
        case VHOST_VDPA_GET_CONFIG_SIZE:
                r = vhost_vdpa_get_config_size(v, argp);
                break;
+       case VHOST_VDPA_GET_VQS_COUNT:
+               r = vhost_vdpa_get_vqs_count(v, argp);
+               break;
        default:
                r = vhost_dev_ioctl(&v->vdev, cmd, argp);
                if (r == -ENOIOCTLCMD)
index bc74e95..5d99e7c 100644 (file)
 /* Get the config size */
 #define VHOST_VDPA_GET_CONFIG_SIZE     _IOR(VHOST_VIRTIO, 0x79, __u32)
 
+/* Get the count of all virtqueues */
+#define VHOST_VDPA_GET_VQS_COUNT       _IOR(VHOST_VIRTIO, 0x80, __u32)
+
 #endif