Messages in this thread | | | Date | Thu, 6 Aug 2020 15:03:55 +0300 | From | Eli Cohen <> | Subject | Re: [PATCH 1/4] vdpa: introduce config op to get valid iova range |
| |
On Wed, Aug 05, 2020 at 08:51:56AM -0400, Michael S. Tsirkin wrote: > On Wed, Jun 17, 2020 at 11:29:44AM +0800, Jason Wang wrote: > > This patch introduce a config op to get valid iova range from the vDPA > > device. > > > > Signed-off-by: Jason Wang <jasowang@redhat.com> > > --- > > include/linux/vdpa.h | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > > index 239db794357c..b7633ed2500c 100644 > > --- a/include/linux/vdpa.h > > +++ b/include/linux/vdpa.h > > @@ -41,6 +41,16 @@ struct vdpa_device { > > unsigned int index; > > }; > > > > +/** > > + * vDPA IOVA range - the IOVA range support by the device > > + * @start: start of the IOVA range > > + * @end: end of the IOVA range > > + */ > > +struct vdpa_iova_range { > > + u64 start; > > + u64 end; > > +}; > > + > > > This is ambiguous. Is end in the range or just behind it? > How about first/last?
It is customary in the kernel to use start-end where end corresponds to the byte following the last in the range. See struct vm_area_struct vm_start and vm_end fields > > > > > /** > > * vDPA_config_ops - operations for configuring a vDPA device. > > * Note: vDPA device drivers are required to implement all of the > > @@ -134,6 +144,9 @@ struct vdpa_device { > > * @get_generation: Get device config generation (optional) > > * @vdev: vdpa device > > * Returns u32: device generation > > + * @get_iova_range: Get supported iova range (on-chip IOMMU) > > + * @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) > > @@ -195,6 +208,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); > > -- > > 2.20.1 >
| |