On Mon, Jun 9, 2025 at 3:50 AM Jason Wang <jasow...@redhat.com> wrote: > > On Mon, Jun 9, 2025 at 9:41 AM Jason Wang <jasow...@redhat.com> wrote: > > > > On Fri, Jun 6, 2025 at 7:50 PM Eugenio Pérez <epere...@redhat.com> wrote: > > > > > > This allows to define all functions checking the API version set by the > > > userland device. > > > > > > Signed-off-by: Eugenio Pérez <epere...@redhat.com> > > > > It might be worth clarifying how it works. > > > > For example, > > > > 1) would VDUSE behave differently or if it's just some new ioctls
I'd like to test more in-depth, but a device can just bump the version ID and then implement the replies to the vduse messages. No need to implement new ioctls. If the VDUSE device sets 0 in either number of ASID or vq groups, the kernel assumes 1. But you have a very good point here, I think it is wise to evaluate the shortcut of these messages in the VDUSE kernel module. If a VDUSE device only has one vq group and one ASID, it can always return group 0 and asid 0 for everything, and fail every try to ser asid != 0. This way, the update is transparent for the VDUSE device, and future devices do not need to implement the reply of these. What do you think? > > 2) If VDUSE behave differently, do we need a ioctl to set the API > > version for backward compatibility? > > Speak too fast, there's a VDUSE_SET_API_VERSION actually. > > I think we need to think if it complicates the migration compatibility or not. > Do you mean migration as "increase the VDUSE version number", not "VM live migration from vduse version 0 to vduse version 1", isn't it? The second should not have any problem but I haven't tested it. > > 3) If it means a brunch of new ioctls, could userspace just probe the > > new ioctls instead? > > > > Thanks > > Thanks > > > > > > --- > > > include/uapi/linux/vduse.h | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h > > > index 68a627d04afa..9a56d0416bfe 100644 > > > --- a/include/uapi/linux/vduse.h > > > +++ b/include/uapi/linux/vduse.h > > > @@ -10,6 +10,10 @@ > > > > > > #define VDUSE_API_VERSION 0 > > > > > > +/* VQ groups and ASID support */ > > > + > > > +#define VDUSE_API_VERSION_1 1 > > > + > > > /* > > > * Get the version of VDUSE API that kernel supported > > > (VDUSE_API_VERSION). > > > * This is used for future extension. > > > -- > > > 2.49.0 > > > >