search for: vhost_dev_set_owner

Displaying 20 results from an estimated 148 matches for "vhost_dev_set_owner".

2016 Aug 22
4
[PATCH] CodingStyle: add some more error handling guidelines
...if (!foo->bar) goto err_bar; ... kfree(foo->bar); err_bar: kfree(foo); err_foo: return ret; I don't know whether there are examples outside code that I wrote myself, e.g. in vhost_dev_set_owner. I find that it's helpful since it avoids churn if more allocations are added. > > diff --git a/tools/virtio/ringtest/main.h b/tools/virtio/ringtest/main.h > > index 16917ac..e4d76c3 100644 > > --- a/tools/virtio/ringtest/main.h > > +++ b/tools/virtio/ringtest/main.h &...
2016 Aug 22
4
[PATCH] CodingStyle: add some more error handling guidelines
...if (!foo->bar) goto err_bar; ... kfree(foo->bar); err_bar: kfree(foo); err_foo: return ret; I don't know whether there are examples outside code that I wrote myself, e.g. in vhost_dev_set_owner. I find that it's helpful since it avoids churn if more allocations are added. > > diff --git a/tools/virtio/ringtest/main.h b/tools/virtio/ringtest/main.h > > index 16917ac..e4d76c3 100644 > > --- a/tools/virtio/ringtest/main.h > > +++ b/tools/virtio/ringtest/main.h &...
2019 Nov 07
1
[PATCH v5] vhost: introduce mdev based hardware backend
...to reject these ioctls for now. >>>> >>>> PS. One thing I may need to clarify is that, we need the >>>> VHOST_SET_OWNER ioctl to get the vq->handle_kick to work. >>>> So if we don't call vhost_dev_ioctl(), we will need to >>>> call vhost_dev_set_owner() directly. >> I may miss something, it looks to me the there's no owner check in >> vhost_vring_ioctl() and the vhost_poll_start() can make sure handle_kick >> works? > Yeah, there is no owner check in vhost_vring_ioctl(). > IIUC, vhost_poll_start() will start polling t...
2020 May 29
0
[PATCH 1/6] vhost: allow device that does not depend on vhost worker
...ct vhost_dev *dev, dev->iov_limit = iov_limit; dev->weight = weight; dev->byte_weight = byte_weight; + dev->use_worker = use_worker; dev->msg_handler = msg_handler; init_llist_head(&dev->work_list); init_waitqueue_head(&dev->wait); @@ -549,18 +556,21 @@ long vhost_dev_set_owner(struct vhost_dev *dev) /* No owner, become one */ dev->mm = get_task_mm(current); dev->kcov_handle = kcov_common_handle(); - worker = kthread_create(vhost_worker, dev, "vhost-%d", current->pid); - if (IS_ERR(worker)) { - err = PTR_ERR(worker); - goto err_worker; - } + if...
2023 Jun 01
1
[syzbot] [kvm?] [net?] [virt?] general protection fault in vhost_work_queue
On Wed, May 31, 2023 at 11:27:12AM -0500, Mike Christie wrote: >On 5/31/23 10:15 AM, Mike Christie wrote: >>>> rcu would work for your case and for what Jason had requested. >>> Yeah, so you already have some patches? >>> >>> Do you want to send it to solve this problem? >>> >> Yeah, I'll break them out and send them later today when I
2016 Aug 22
0
[PATCH] CodingStyle: add some more error handling guidelines
vhost_dev_set_owner() is an example of why come-from labels are bad style. devel/drivers/vhost/vhost.c 473 /* Caller should have device mutex */ 474 long vhost_dev_set_owner(struct vhost_dev *dev) 475 { 476 struct task_struct *worker; 477 int err; 478 479 /* Is the...
2019 Oct 17
0
[PATCH RFC 3/3] vhost, kcov: collect coverage from vhost_worker
...Shouldn't you hide these #ifdefs in a .h file? This is not a "normal" kernel coding style at all. > work->fn(work); > +#ifdef CONFIG_KCOV > + kcov_remote_stop(); > +#endif > if (need_resched()) > schedule(); > } > @@ -546,6 +552,9 @@ long vhost_dev_set_owner(struct vhost_dev *dev) > > /* No owner, become one */ > dev->mm = get_task_mm(current); > +#ifdef CONFIG_KCOV > + dev->kcov_handle = current->kcov_handle; > +#endif > worker = kthread_create(vhost_worker, dev, "vhost-%d", current->pid); > if (...
2019 Oct 23
0
[PATCH 3/3] vhost, kcov: collect coverage from vhost_worker
...kcov_remote_start(dev->kcov_handle); > work->fn(work); > + kcov_remote_stop(); > if (need_resched()) > schedule(); > } > @@ -546,6 +549,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) > > /* No owner, become one */ > dev->mm = get_task_mm(current); > + dev->kcov_handle = current->kcov_handle; kcov_handle is not present in task_struct if !CONFIG_KCOV Also this does not use KCOV_SUBSYSTEM_COMMON. We discussed some...
2013 May 07
0
[PULL] vhost: more fixes for 3.10
...karound disabling event_idx for scsi: it was always questionable, and now we know it's not needed. There's also a memory leak fix. Signed-off-by: Michael S. Tsirkin <mst at redhat.com> ---------------------------------------------------------------- Asias He (7): vhost: Export vhost_dev_set_owner vhost-net: Free ubuf when vhost_dev_set_owner fails vhost: Move VHOST_NET_FEATURES to net.c vhost: Remove comments for hdr in vhost.h vhost: Remove vhost_enable_zcopy in vhost.h vhost-net: Cleanup vhost_ubuf and vhost_zcopy vhost-scsi: Enable VIRTIO_RING_F_EVENT_...
2013 May 07
0
[PULL] vhost: more fixes for 3.10
...karound disabling event_idx for scsi: it was always questionable, and now we know it's not needed. There's also a memory leak fix. Signed-off-by: Michael S. Tsirkin <mst at redhat.com> ---------------------------------------------------------------- Asias He (7): vhost: Export vhost_dev_set_owner vhost-net: Free ubuf when vhost_dev_set_owner fails vhost: Move VHOST_NET_FEATURES to net.c vhost: Remove comments for hdr in vhost.h vhost: Remove vhost_enable_zcopy in vhost.h vhost-net: Cleanup vhost_ubuf and vhost_zcopy vhost-scsi: Enable VIRTIO_RING_F_EVENT_...
2013 Jun 06
0
[PATCH net 1/2] vhost: check owner before we overwrite ubuf_info
...--- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -344,13 +344,19 @@ static int vhost_attach_cgroups(struct vhost_dev *dev) } /* Caller should have device mutex */ +bool vhost_dev_has_owner(struct vhost_dev *dev) +{ + return dev->mm; +} + +/* Caller should have device mutex */ long vhost_dev_set_owner(struct vhost_dev *dev) { struct task_struct *worker; int err; /* Is there an owner already? */ - if (dev->mm) { + if (vhost_dev_has_owner(dev)) { err = -EBUSY; goto err_mm; } diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index a7ad635..64adcf9 100644 --- a/drivers/v...
2019 Oct 23
0
[PATCH 3/3] vhost, kcov: collect coverage from vhost_worker
...; > work->fn(work); > > > + kcov_remote_stop(); > > > if (need_resched()) > > > schedule(); > > > } > > > @@ -546,6 +549,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) > > > > > > /* No owner, become one */ > > > dev->mm = get_task_mm(current); > > > + dev->kcov_handle = current->kcov_handle; > > > > kcov_handle is not present in task_struct if !CONFIG_KCOV >...
2023 Mar 28
1
[PATCH v6 11/11] vhost: allow userspace to create workers
...eturn -EBUSY; + + xa_erase(&dev->worker_xa, worker->id); + /* + * Make sure if there was a flush that saw the worker in the XA that + * it has completed. + */ + vhost_work_flush_on(worker); + + vhost_worker_put(dev, worker); + return 0; +} + /* Caller should have device mutex */ long vhost_dev_set_owner(struct vhost_dev *dev) { @@ -624,7 +752,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) goto err_worker; for (i = 0; i < dev->nvqs; i++) - dev->vqs[i]->worker = worker; + __vhost_vq_attach_worker(dev->vqs[i], worker); } err = vhost_dev_alloc_iovecs(dev); @@ -...
2019 Jun 06
2
[PATCH] vhost: Don't use defined in VHOST_ARCH_CAN_ACCEL_UACCESS definition
...d vhost_dev_init(struct vhost_dev *dev, INIT_LIST_HEAD(&dev->read_list); INIT_LIST_HEAD(&dev->pending_list); spin_lock_init(&dev->iotlb_lock); -#if VHOST_ARCH_CAN_ACCEL_UACCESS +#ifdef VHOST_ARCH_CAN_ACCEL_UACCESS vhost_init_maps(dev); #endif @@ -726,7 +726,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) if (err) goto err_cgroup; -#if VHOST_ARCH_CAN_ACCEL_UACCESS +#ifdef VHOST_ARCH_CAN_ACCEL_UACCESS err = mmu_notifier_register(&dev->mmu_notifier, dev->mm); if (err) goto err_mmu_notifier; @@ -734,7 +734,7 @@ long vhost_dev_set_owner(struct vhost_dev *de...
2019 Jun 06
2
[PATCH] vhost: Don't use defined in VHOST_ARCH_CAN_ACCEL_UACCESS definition
...d vhost_dev_init(struct vhost_dev *dev, INIT_LIST_HEAD(&dev->read_list); INIT_LIST_HEAD(&dev->pending_list); spin_lock_init(&dev->iotlb_lock); -#if VHOST_ARCH_CAN_ACCEL_UACCESS +#ifdef VHOST_ARCH_CAN_ACCEL_UACCESS vhost_init_maps(dev); #endif @@ -726,7 +726,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) if (err) goto err_cgroup; -#if VHOST_ARCH_CAN_ACCEL_UACCESS +#ifdef VHOST_ARCH_CAN_ACCEL_UACCESS err = mmu_notifier_register(&dev->mmu_notifier, dev->mm); if (err) goto err_mmu_notifier; @@ -734,7 +734,7 @@ long vhost_dev_set_owner(struct vhost_dev *de...
2015 Jun 24
2
[PATCH RFC] vhost: add ioctl to query nregions upper limit
...long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp) long r; int i, fd; + if (ioctl == VHOST_GET_MEM_MAX_NREGIONS) { + r = VHOST_MEMORY_MAX_NREGIONS; + goto done; + } + /* If you are not the owner, you can become one */ if (ioctl == VHOST_SET_OWNER) { r = vhost_dev_set_owner(d); -- MST
2015 Jun 24
2
[PATCH RFC] vhost: add ioctl to query nregions upper limit
...long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp) long r; int i, fd; + if (ioctl == VHOST_GET_MEM_MAX_NREGIONS) { + r = VHOST_MEMORY_MAX_NREGIONS; + goto done; + } + /* If you are not the owner, you can become one */ if (ioctl == VHOST_SET_OWNER) { r = vhost_dev_set_owner(d); -- MST
2010 Sep 05
0
[PATCH] vhost: fix attach to cgroups regression
...ct attach; + attach.owner = current; + vhost_work_init(&attach.work, vhost_attach_cgroups_work); + vhost_work_queue(dev, &attach.work); + vhost_work_flush(dev, &attach.work); + return attach.ret; +} + /* Caller should have device mutex */ static long vhost_dev_set_owner(struct vhost_dev *dev) { @@ -255,10 +289,11 @@ static long vhost_dev_set_owner(struct vhost_dev *dev) } dev->worker = worker; - err = cgroup_attach_task_current_cg(worker); + wake_up_process(worker); /* avoid contributing to loadavg */ + + err = vhost_attach_cgroups(dev); if (err) go...
2010 Sep 05
0
[PATCH] vhost: fix attach to cgroups regression
...ct attach; + attach.owner = current; + vhost_work_init(&attach.work, vhost_attach_cgroups_work); + vhost_work_queue(dev, &attach.work); + vhost_work_flush(dev, &attach.work); + return attach.ret; +} + /* Caller should have device mutex */ static long vhost_dev_set_owner(struct vhost_dev *dev) { @@ -255,10 +289,11 @@ static long vhost_dev_set_owner(struct vhost_dev *dev) } dev->worker = worker; - err = cgroup_attach_task_current_cg(worker); + wake_up_process(worker); /* avoid contributing to loadavg */ + + err = vhost_attach_cgroups(dev); if (err) go...
2023 Mar 21
1
[PATCH v3 2/8] vhost-vdpa: use bind_mm/unbind_mm device callbacks
...} + static long vhost_vdpa_get_device_id(struct vhost_vdpa *v, u8 __user *argp) { struct vdpa_device *vdpa = v->vdpa; @@ -709,6 +731,14 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, case VHOST_VDPA_RESUME: r = vhost_vdpa_resume(v); break; + case VHOST_SET_OWNER: + r = vhost_dev_set_owner(d); + if (r) + break; + r = vhost_vdpa_bind_mm(v); + if (r) + vhost_dev_reset_owner(d, NULL); + break; default: r = vhost_dev_ioctl(&v->vdev, cmd, argp); if (r == -ENOIOCTLCMD) @@ -1287,6 +1317,7 @@ static int vhost_vdpa_release(struct inode *inode, struct file *filep) vhos...