Thread (31 messages) 31 messages, 7 authors, 2024-12-10

Re: [PATCH v3 7/9] vhost: Add new UAPI to support change to task mode

From: Mike Christie <michael.christie@oracle.com>
Date: 2024-11-25 15:19:37
Also in: lkml, virtualization

On 11/5/24 3:39 AM, Jason Wang wrote:
On Tue, Nov 5, 2024 at 3:28 PM Cindy Lu [off-list ref] wrote:
quoted
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 <redacted>
---
 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help