On Mon, Aug 19, 2024 at 5:29 PM Cindy Lu <l...@redhat.com> wrote: > > Add a new UAPI to support setting the vhost device to > use kthread mode. The user space application needs to use > VHOST_SET_USE_KTHREAD to set the mode. This setting must > be set before VHOST_SET_OWNER is set. > > Signed-off-by: Cindy Lu <l...@redhat.com> > --- > drivers/vhost/vhost.c | 11 ++++++++++- > include/uapi/linux/vhost.h | 2 ++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 0a7b2999100f..d6b71bddc272 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -2340,14 +2340,23 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned > int ioctl, void __user *argp) > { > struct eventfd_ctx *ctx; > u64 p; > - long r; > + long r = 0; > int i, fd; > + bool kthread; > > /* If you are not the owner, you can become one */ > if (ioctl == VHOST_SET_OWNER) { > r = vhost_dev_set_owner(d); > goto done; > } > + if (ioctl == VHOST_SET_USE_KTHREAD) { > + if (copy_from_user(&kthread, argp, sizeof(kthread))) { > + r = -EFAULT; > + goto done; > + } > + use_kthread = kthread; > + goto done; > + } > > /* You must be the owner to do anything else */ > r = vhost_dev_check_owner(d); > diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h > index b95dd84eef2d..386fe735da63 100644 > --- a/include/uapi/linux/vhost.h > +++ b/include/uapi/linux/vhost.h > @@ -235,4 +235,6 @@ > */ > #define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \ > struct vhost_vring_state) > +
Unnecessary changes. > +#define VHOST_SET_USE_KTHREAD _IOW(VHOST_VIRTIO, 0x83, bool) So I think we need to do something the opposite. New flag for new behaviour instead of new flag for the old one ... By using this we can unbreak the old applications. Btw, I think this needs to come before/along with the introduction of the module parameter that enforce old beahviour. Thanks > #endif > -- > 2.45.0 >