Commit 0a926fc9 authored by Zhu Lingshan's avatar Zhu Lingshan Committed by Michael S. Tsirkin

vDPA: introduce get_vq_size to vdpa_config_ops

This commit introduces a new interface get_vq_size to
vDPA config ops, this new interface intends to report
the size of a specific virtqueue
Signed-off-by: default avatarZhu Lingshan <lingshan.zhu@intel.com>
Message-Id: <20240202163905.8834-3-lingshan.zhu@intel.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 1496c470
...@@ -687,6 +687,14 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd, ...@@ -687,6 +687,14 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
if (!ops->set_group_asid) if (!ops->set_group_asid)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return ops->set_group_asid(vdpa, idx, s.num); return ops->set_group_asid(vdpa, idx, s.num);
case VHOST_VDPA_GET_VRING_SIZE:
if (!ops->get_vq_size)
return -EOPNOTSUPP;
s.index = idx;
s.num = ops->get_vq_size(vdpa, idx);
if (copy_to_user(argp, &s, sizeof(s)))
return -EFAULT;
return 0;
case VHOST_GET_VRING_BASE: case VHOST_GET_VRING_BASE:
r = ops->get_vq_state(v->vdpa, idx, &vq_state); r = ops->get_vq_state(v->vdpa, idx, &vq_state);
if (r) if (r)
......
...@@ -195,6 +195,10 @@ struct vdpa_map_file { ...@@ -195,6 +195,10 @@ struct vdpa_map_file {
* @idx: virtqueue index * @idx: virtqueue index
* Returns int: irq number of a virtqueue, * Returns int: irq number of a virtqueue,
* negative number if no irq assigned. * negative number if no irq assigned.
* @get_vq_size: Get the size of a specific virtqueue (optional)
* @vdev: vdpa device
* @idx: virtqueue index
* Return u16: the size of the virtqueue
* @get_vq_align: Get the virtqueue align requirement * @get_vq_align: Get the virtqueue align requirement
* for the device * for the device
* @vdev: vdpa device * @vdev: vdpa device
...@@ -386,6 +390,7 @@ struct vdpa_config_ops { ...@@ -386,6 +390,7 @@ struct vdpa_config_ops {
(*get_vq_notification)(struct vdpa_device *vdev, u16 idx); (*get_vq_notification)(struct vdpa_device *vdev, u16 idx);
/* vq irq is not expected to be changed once DRIVER_OK is set */ /* vq irq is not expected to be changed once DRIVER_OK is set */
int (*get_vq_irq)(struct vdpa_device *vdev, u16 idx); int (*get_vq_irq)(struct vdpa_device *vdev, u16 idx);
u16 (*get_vq_size)(struct vdpa_device *vdev, u16 idx);
/* Device ops */ /* Device ops */
u32 (*get_vq_align)(struct vdpa_device *vdev); u32 (*get_vq_align)(struct vdpa_device *vdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment