On Thu, Dec 15, 2022 at 12:30 AM Stefano Garzarella <sgarzare@xxxxxxxxxx> wrote: > > This new optional callback is used to bind the device to a specific > address space so the vDPA framework can use VA when this callback > is implemented. > > Suggested-by: Jason Wang <jasowang@xxxxxxxxxx> > Signed-off-by: Stefano Garzarella <sgarzare@xxxxxxxxxx> > --- > include/linux/vdpa.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > index 6d0f5e4e82c2..34388e21ef3f 100644 > --- a/include/linux/vdpa.h > +++ b/include/linux/vdpa.h > @@ -282,6 +282,12 @@ struct vdpa_map_file { > * @iova: iova to be unmapped > * @size: size of the area > * Returns integer: success (0) or error (< 0) > + * @bind_mm: Bind the device to a specific address space > + * so the vDPA framework can use VA when this > + * callback is implemented. (optional) > + * @vdev: vdpa device > + * @mm: address space to bind Do we need an unbind or did a NULL mm mean unbind? > + * @owner: process that owns the address space Any reason we need the task_struct here? Thanks > * @free: Free resources that belongs to vDPA (optional) > * @vdev: vdpa device > */ > @@ -341,6 +347,8 @@ struct vdpa_config_ops { > u64 iova, u64 size); > int (*set_group_asid)(struct vdpa_device *vdev, unsigned int group, > unsigned int asid); > + int (*bind_mm)(struct vdpa_device *vdev, struct mm_struct *mm, > + struct task_struct *owner); > > /* Free device resources */ > void (*free)(struct vdpa_device *vdev); > -- > 2.38.1 >