On Tue, 27 Aug 2024 at 10:36, Jason Wang <jasowang@xxxxxxxxxx> wrote: > > On Mon, Aug 19, 2024 at 5:29 PM Cindy Lu <lulu@xxxxxxxxxx> wrote: > > > > Added back the previously removed function vhost_worker_queue() and > > renamed it to vhost_worker_queue_khtread(). The new vhost_worker_queue() > > will select the different mode based on the value of the parameter. > > > > Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx> > > It looks like a partial revert of some previous commit, please mention > the commit id in the change log as least. > > So did for the following 3 or 4 patches. > > Thanks > sure, will add this Thanks cindy > > --- > > drivers/vhost/vhost.c | 30 ++++++++++++++++++++++++++++-- > > drivers/vhost/vhost.h | 1 + > > 2 files changed, 29 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > > index da701f6b3f2c..6261c9df468e 100644 > > --- a/drivers/vhost/vhost.c > > +++ b/drivers/vhost/vhost.c > > @@ -236,8 +236,8 @@ void vhost_poll_stop(struct vhost_poll *poll) > > } > > EXPORT_SYMBOL_GPL(vhost_poll_stop); > > > > -static void vhost_worker_queue(struct vhost_worker *worker, > > - struct vhost_work *work) > > +static void vhost_worker_queue_task(struct vhost_worker *worker, > > + struct vhost_work *work) > > { > > if (!test_and_set_bit(VHOST_WORK_QUEUED, &work->flags)) { > > /* We can only add the work to the list after we're > > @@ -249,6 +249,32 @@ static void vhost_worker_queue(struct vhost_worker *worker, > > } > > } > > > > +static void vhost_work_queue_kthread(struct vhost_worker *worker, > > + struct vhost_work *work) > > +{ > > + if (!worker) > > + return; > > + > > + if (!test_and_set_bit(VHOST_WORK_QUEUED, &work->flags)) { > > + /* We can only add the work to the list after we're > > + * sure it was not in the list. > > + * test_and_set_bit() implies a memory barrier. > > + */ > > + llist_add(&work->node, &worker->work_list); > > + > > + wake_up_process(worker->task); > > + } > > +} > > + > > +static void vhost_worker_queue(struct vhost_worker *worker, > > + struct vhost_work *work) > > +{ > > + if (use_kthread) { > > + vhost_work_queue_kthread(worker, work); > > + } else { > > + vhost_worker_queue_task(worker, work); > > + } > > +} > > bool vhost_vq_work_queue(struct vhost_virtqueue *vq, struct vhost_work *work) > > { > > struct vhost_worker *worker; > > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > > index bb75a292d50c..c7f126fd09e8 100644 > > --- a/drivers/vhost/vhost.h > > +++ b/drivers/vhost/vhost.h > > @@ -27,6 +27,7 @@ struct vhost_work { > > }; > > > > struct vhost_worker { > > + struct task_struct *task; > > struct vhost_task *vtsk; > > struct vhost_dev *dev; > > /* Used to serialize device wide flushing with worker swapping. */ > > -- > > 2.45.0 > > >