Message ID | 20221214163025.103075-2-sgarzare@redhat.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
Series | vdpa_sim: add support for user VA | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Thu, Dec 15, 2022 at 12:30 AM Stefano Garzarella <sgarzare@redhat.com> 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@redhat.com> > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > 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 >
On Fri, Dec 16, 2022 at 02:37:45PM +0800, Jason Wang wrote: >On Thu, Dec 15, 2022 at 12:30 AM Stefano Garzarella <sgarzare@redhat.com> 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@redhat.com> >> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> >> --- >> 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? Yep, your comment in patch 6 makes it necessary. I will add it! > >> + * @owner: process that owns the address space > >Any reason we need the task_struct here? Mainly to attach to kthread to the process cgroups, but that part is still in TODO since I need to understand it better. Maybe we can remove the task_struct here and use `current` directly in the callback. Thanks, Stefano
在 2022/12/16 16:17, Stefano Garzarella 写道: > On Fri, Dec 16, 2022 at 02:37:45PM +0800, Jason Wang wrote: >> On Thu, Dec 15, 2022 at 12:30 AM Stefano Garzarella >> <sgarzare@redhat.com> 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@redhat.com> >>> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> >>> --- >>> 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? > > Yep, your comment in patch 6 makes it necessary. I will add it! > >> >>> + * @owner: process that owns the >>> address space >> >> Any reason we need the task_struct here? > > Mainly to attach to kthread to the process cgroups, but that part is > still in TODO since I need to understand it better. Ok I see. > > Maybe we can remove the task_struct here and use `current` directly in > the callback. Yes, it's easier to start without cgroup and we can add it on top. Thanks > > Thanks, > Stefano >
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 + * @owner: process that owns the address space * @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);
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@redhat.com> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- include/linux/vdpa.h | 8 ++++++++ 1 file changed, 8 insertions(+)