vdpa: make get_vq_group and set_group_asid optional
authorJason Wang <jasowang@redhat.com>
Thu, 9 Jun 2022 04:19:01 +0000 (12:19 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 9 Jun 2022 04:26:35 +0000 (00:26 -0400)
This patch makes get_vq_group and set_group_asid optional. This is
needed to unbreak the vDPA parent that doesn't support multiple
address spaces.

Cc: Gautam Dawar <gautam.dawar@xilinx.com>
Fixes: aaca8373c4b1 ("vhost-vdpa: support ASID based IOTLB API")
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220609041901.2029-1-jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/vdpa.c
include/linux/vdpa.h

index 935a1d0ddb97e035ecc7329bd78649a558860a8b..5ad2596c6e8a1631a249f7d61df4e8a53f401c64 100644 (file)
@@ -499,6 +499,8 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
                ops->set_vq_ready(vdpa, idx, s.num);
                return 0;
        case VHOST_VDPA_GET_VRING_GROUP:
+               if (!ops->get_vq_group)
+                       return -EOPNOTSUPP;
                s.index = idx;
                s.num = ops->get_vq_group(vdpa, idx);
                if (s.num >= vdpa->ngroups)
index 4700a88a28f6c70a89f5d21ca7597936d4019f3e..7b4a13d3bd919009e4ebae7751f3685964f7e1a6 100644 (file)
@@ -178,7 +178,8 @@ struct vdpa_map_file {
  *                             for the device
  *                             @vdev: vdpa device
  *                             Returns virtqueue algin requirement
- * @get_vq_group:              Get the group id for a specific virtqueue
+ * @get_vq_group:              Get the group id for a specific
+ *                             virtqueue (optional)
  *                             @vdev: vdpa device
  *                             @idx: virtqueue index
  *                             Returns u32: group id for this virtqueue
@@ -243,7 +244,7 @@ struct vdpa_map_file {
  *                             Returns the iova range supported by
  *                             the device.
  * @set_group_asid:            Set address space identifier for a
- *                             virtqueue group
+ *                             virtqueue group (optional)
  *                             @vdev: vdpa device
  *                             @group: virtqueue group
  *                             @asid: address space id for this group