+
+static int vhost_vq_poll_start(struct vhost_virtqueue *vq)
+{
+ if (!vq->worker) {
+ vq->worker = kthread_create(vhost_vq_worker, vq, "vhost-%d/%i",
+ vq->dev->pid, vq->index);
+ if (IS_ERR(vq->worker)) {
+ int ret = PTR_ERR(vq->worker);
+
+ pr_err("%s: can't create vq worker: %d\n", __func__,
+ ret);
+ vq->worker = NULL;
+ return ret;
+ }
+ }
+ vhost_work_init(&vq->work, vhost_vq_poll_start_work);
+ vhost_vq_work_queue(vq, &vq->work);
+ return 0;
+}
+