vdpa: introduce config op to get valid iova range
authorJason Wang <jasowang@redhat.com>
Fri, 23 Oct 2020 09:00:41 +0000 (17:00 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Fri, 23 Oct 2020 15:55:27 +0000 (11:55 -0400)
This patch introduce a config op to get valid iova range from the vDPA
device.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20201023090043.14430-2-jasowang@redhat.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
include/linux/vdpa.h

index eae0bfd..30bc7a7 100644 (file)
@@ -53,6 +53,16 @@ struct vdpa_device {
 };
 
 /**
+ * vDPA IOVA range - the IOVA range support by the device
+ * @first: start of the IOVA range
+ * @last: end of the IOVA range
+ */
+struct vdpa_iova_range {
+       u64 first;
+       u64 last;
+};
+
+/**
  * vDPA_config_ops - operations for configuring a vDPA device.
  * Note: vDPA device drivers are required to implement all of the
  * operations unless it is mentioned to be optional in the following
@@ -151,6 +161,10 @@ struct vdpa_device {
  * @get_generation:            Get device config generation (optional)
  *                             @vdev: vdpa device
  *                             Returns u32: device generation
+ * @get_iova_range:            Get supported iova range (optional)
+ *                             @vdev: vdpa device
+ *                             Returns the iova range supported by
+ *                             the device.
  * @set_map:                   Set device memory mapping (optional)
  *                             Needed for device that using device
  *                             specific DMA translation (on-chip IOMMU)
@@ -216,6 +230,7 @@ struct vdpa_config_ops {
        void (*set_config)(struct vdpa_device *vdev, unsigned int offset,
                           const void *buf, unsigned int len);
        u32 (*get_generation)(struct vdpa_device *vdev);
+       struct vdpa_iova_range (*get_iova_range)(struct vdpa_device *vdev);
 
        /* DMA ops */
        int (*set_map)(struct vdpa_device *vdev, struct vhost_iotlb *iotlb);