On 11/5/24 3:39 AM, Jason Wang wrote: > On Tue, Nov 5, 2024 at 3:28 PM Cindy Lu <lulu@xxxxxxxxxx> wrote: >> >> Add a new UAPI to enable setting the vhost device to task mode. >> The userspace application can use VHOST_SET_INHERIT_FROM_OWNER >> to configure the mode if necessary. >> This setting must be applied before VHOST_SET_OWNER, as the worker >> will be created in the VHOST_SET_OWNER function >> >> Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx> >> --- >> drivers/vhost/vhost.c | 15 ++++++++++++++- >> include/uapi/linux/vhost.h | 2 ++ >> 2 files changed, 16 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c >> index c17dc01febcc..70c793b63905 100644 >> --- a/drivers/vhost/vhost.c >> +++ b/drivers/vhost/vhost.c >> @@ -2274,8 +2274,9 @@ 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 inherit_owner; >> >> /* If you are not the owner, you can become one */ >> if (ioctl == VHOST_SET_OWNER) { >> @@ -2332,6 +2333,18 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp) >> if (ctx) >> eventfd_ctx_put(ctx); >> break; >> + case VHOST_SET_INHERIT_FROM_OWNER: >> + /*inherit_owner can only be modified before owner is set*/ >> + if (vhost_dev_has_owner(d)) >> + break; >> + >> + if (copy_from_user(&inherit_owner, argp, >> + sizeof(inherit_owner))) { >> + r = -EFAULT; >> + break; >> + } >> + d->inherit_owner = inherit_owner; >> + break; > > Is there any case that we need to switch from owner back to kthread? > If not I would choose a more simplified API that is just > VHOST_INHERIT_OWNER. I can't think of any need to be able to switch back and forth for general use. However for this patchset, I think in patch 9/9 we set the default as: inherit_owner_default = true so the default is to use vhost_tasks. With that code, we would need VHOST_SET_INHERIT_FROM_OWNER so userspace can set the kernel to use kthreads. I'm not sure if in the past emails it was resolved what the default would be.