On Tue, Mar 28, 2023 at 10:17 AM Mike Christie <michael.christie@xxxxxxxxxx> wrote: > > In the next patches each vq might have different workers so one could > have work but others do not. For net, we only want to check specific vqs, > so this adds a helper to check if a vq has work pending and converts > vhost-net to use it. > > Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx> Acked-by: Jason Wang <jasowang@xxxxxxxxxx> Thanks > --- > drivers/vhost/net.c | 2 +- > drivers/vhost/vhost.c | 6 +++--- > drivers/vhost/vhost.h | 2 +- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > index 07181cd8d52e..8ed63651b9eb 100644 > --- a/drivers/vhost/net.c > +++ b/drivers/vhost/net.c > @@ -546,7 +546,7 @@ static void vhost_net_busy_poll(struct vhost_net *net, > endtime = busy_clock() + busyloop_timeout; > > while (vhost_can_busy_poll(endtime)) { > - if (vhost_has_work(&net->dev)) { > + if (vhost_vq_has_work(vq)) { > *busyloop_intr = true; > break; > } > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index e041e116afee..6567aed69ebb 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -262,11 +262,11 @@ void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work) > EXPORT_SYMBOL_GPL(vhost_work_queue); > > /* A lockless hint for busy polling code to exit the loop */ > -bool vhost_has_work(struct vhost_dev *dev) > +bool vhost_vq_has_work(struct vhost_virtqueue *vq) > { > - return dev->worker && !llist_empty(&dev->worker->work_list); > + return vq->worker && !llist_empty(&vq->worker->work_list); > } > -EXPORT_SYMBOL_GPL(vhost_has_work); > +EXPORT_SYMBOL_GPL(vhost_vq_has_work); > > void vhost_poll_queue(struct vhost_poll *poll) > { > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > index e72b665ba3a5..0dde119fb0ee 100644 > --- a/drivers/vhost/vhost.h > +++ b/drivers/vhost/vhost.h > @@ -45,7 +45,6 @@ struct vhost_poll { > > void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn); > void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work); > -bool vhost_has_work(struct vhost_dev *dev); > > void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, > __poll_t mask, struct vhost_dev *dev); > @@ -195,6 +194,7 @@ int vhost_get_vq_desc(struct vhost_virtqueue *, > struct vhost_log *log, unsigned int *log_num); > void vhost_discard_vq_desc(struct vhost_virtqueue *, int n); > > +bool vhost_vq_has_work(struct vhost_virtqueue *vq); > bool vhost_vq_is_setup(struct vhost_virtqueue *vq); > int vhost_vq_init_access(struct vhost_virtqueue *); > int vhost_add_used(struct vhost_virtqueue *, unsigned int head, int len); > -- > 2.25.1 > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization