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 <jasow...@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
> 

Reply via email to