On Thu, Aug 7, 2025 at 7:58 PM Eugenio Pérez <eperezma@xxxxxxxxxx> wrote: > > This message lets the kernel notify userspace VDUSE backends about > updated IOTLB mappings for a specific ASID. > > Signed-off-by: Eugenio Pérez <eperezma@xxxxxxxxxx> I guess this could be squashed to the previous patch for logic completeness. Thanks > --- > drivers/vdpa/vdpa_user/vduse_dev.c | 14 ++++++++++---- > include/uapi/linux/vduse.h | 7 +++++++ > 2 files changed, 17 insertions(+), 4 deletions(-) > > diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c > index 145147c49930..ac7897068222 100644 > --- a/drivers/vdpa/vdpa_user/vduse_dev.c > +++ b/drivers/vdpa/vdpa_user/vduse_dev.c > @@ -326,7 +326,7 @@ static int vduse_dev_set_status(struct vduse_dev *dev, u8 status) > return vduse_dev_msg_sync(dev, &msg); > } > > -static int vduse_dev_update_iotlb(struct vduse_dev *dev, > +static int vduse_dev_update_iotlb(struct vduse_dev *dev, u32 asid, > u64 start, u64 last) > { > struct vduse_dev_msg msg = { 0 }; > @@ -335,8 +335,14 @@ static int vduse_dev_update_iotlb(struct vduse_dev *dev, > return -EINVAL; > > msg.req.type = VDUSE_UPDATE_IOTLB; > - msg.req.iova.start = start; > - msg.req.iova.last = last; > + if (dev->api_version < VDUSE_API_VERSION_1) { > + msg.req.iova.start = start; > + msg.req.iova.last = last; > + } else { > + msg.req.iova_v2.start = start; > + msg.req.iova_v2.last = last; > + msg.req.iova_v2.asid = asid; > + } > > return vduse_dev_msg_sync(dev, &msg); > } > @@ -882,7 +888,7 @@ static int vduse_vdpa_set_map(struct vdpa_device *vdpa, > if (ret) > return ret; > > - ret = vduse_dev_update_iotlb(dev, 0ULL, ULLONG_MAX); > + ret = vduse_dev_update_iotlb(dev, asid, 0ULL, ULLONG_MAX); > if (ret) { > vduse_domain_clear_map(dev->domain[asid], iotlb); > return ret; > diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h > index d300fd5f867f..a5f7a5edb8e0 100644 > --- a/include/uapi/linux/vduse.h > +++ b/include/uapi/linux/vduse.h > @@ -349,6 +349,12 @@ struct vduse_iova_range { > __u64 last; > }; > > +struct vduse_iova_range_v2 { > + __u64 start; > + __u64 last; > + __u32 asid; > +}; > + > /** > * struct vduse_dev_request - control request > * @type: request type > @@ -369,6 +375,7 @@ struct vduse_dev_request { > struct vduse_vq_state vq_state; > struct vduse_dev_status s; > struct vduse_iova_range iova; > + struct vduse_iova_range_v2 iova_v2; > struct vduse_vq_group vq_group; /* Only if vduse api version >= 1 */ > /* Only if vduse api version >= 1 */ > struct vduse_vq_group_asid vq_group_asid; > -- > 2.50.1 >