* Re: [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path [not found] <20220328105817.1028065-1-xianting.tian@linux.alibaba.com> @ 2022-03-29 4:56 ` Jason Wang [not found] ` <20220328105817.1028065-2-xianting.tian@linux.alibaba.com> 2022-03-29 7:49 ` [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path Stefano Garzarella 2 siblings, 0 replies; 5+ messages in thread From: Jason Wang @ 2022-03-29 4:56 UTC (permalink / raw) To: Xianting Tian; +Cc: virtualization, linux-kernel, mst On Mon, Mar 28, 2022 at 6:58 PM Xianting Tian <xianting.tian@linux.alibaba.com> wrote: > > It passes '_vq' to virtqueue_use_indirect(), which still calls > to_vvq to get 'vq', let's directly pass 'vq'. It can avoid > unnecessary call of to_vvq in hot path. > > Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> Acked-by: Jason Wang <jasowang@redhat.com> > --- > drivers/virtio/virtio_ring.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 962f1477b1fa..d597fc0874ec 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -205,11 +205,9 @@ struct vring_virtqueue { > > #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) > > -static inline bool virtqueue_use_indirect(struct virtqueue *_vq, > +static inline bool virtqueue_use_indirect(struct vring_virtqueue *vq, > unsigned int total_sg) > { > - struct vring_virtqueue *vq = to_vvq(_vq); > - > /* > * If the host supports indirect descriptor tables, and we have multiple > * buffers, then go indirect. FIXME: tune this threshold > @@ -507,7 +505,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > > head = vq->free_head; > > - if (virtqueue_use_indirect(_vq, total_sg)) > + if (virtqueue_use_indirect(vq, total_sg)) > desc = alloc_indirect_split(_vq, total_sg, gfp); > else { > desc = NULL; > @@ -1194,7 +1192,7 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq, > > BUG_ON(total_sg == 0); > > - if (virtqueue_use_indirect(_vq, total_sg)) { > + if (virtqueue_use_indirect(vq, total_sg)) { > err = virtqueue_add_indirect_packed(vq, sgs, total_sg, out_sgs, > in_sgs, data, gfp); > if (err != -ENOMEM) { > -- > 2.17.1 > _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20220328105817.1028065-2-xianting.tian@linux.alibaba.com>]
* Re: [PATCH 2/2] virtio_ring: add unlikely annotation for free descs check [not found] ` <20220328105817.1028065-2-xianting.tian@linux.alibaba.com> @ 2022-03-29 4:57 ` Jason Wang 2022-03-29 7:50 ` Stefano Garzarella 1 sibling, 0 replies; 5+ messages in thread From: Jason Wang @ 2022-03-29 4:57 UTC (permalink / raw) To: Xianting Tian; +Cc: virtualization, linux-kernel, mst On Mon, Mar 28, 2022 at 6:58 PM Xianting Tian <xianting.tian@linux.alibaba.com> wrote: > > The 'if (vq->vq.num_free < descs_used)' check will almost always be false. > > Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> Acked-by: Jason Wang <jasowang@redhat.com> > --- > drivers/virtio/virtio_ring.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index d597fc0874ec..ab6d5f0cb579 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -525,7 +525,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > descs_used = total_sg; > } > > - if (vq->vq.num_free < descs_used) { > + if (unlikely(vq->vq.num_free < descs_used)) { > pr_debug("Can't add buf len %i - avail = %i\n", > descs_used, vq->vq.num_free); > /* FIXME: for historical reasons, we force a notify here if > -- > 2.17.1 > _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] virtio_ring: add unlikely annotation for free descs check [not found] ` <20220328105817.1028065-2-xianting.tian@linux.alibaba.com> 2022-03-29 4:57 ` [PATCH 2/2] virtio_ring: add unlikely annotation for free descs check Jason Wang @ 2022-03-29 7:50 ` Stefano Garzarella [not found] ` <073dc28b-1707-cd04-daba-13aa4fac5a85@linux.alibaba.com> 1 sibling, 1 reply; 5+ messages in thread From: Stefano Garzarella @ 2022-03-29 7:50 UTC (permalink / raw) To: Xianting Tian; +Cc: virtualization, linux-kernel, mst On Mon, Mar 28, 2022 at 06:58:17PM +0800, Xianting Tian wrote: >The 'if (vq->vq.num_free < descs_used)' check will almost always be false. > >Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> >--- > drivers/virtio/virtio_ring.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > >diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c >index d597fc0874ec..ab6d5f0cb579 100644 >--- a/drivers/virtio/virtio_ring.c >+++ b/drivers/virtio/virtio_ring.c >@@ -525,7 +525,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > descs_used = total_sg; > } > >- if (vq->vq.num_free < descs_used) { >+ if (unlikely(vq->vq.num_free < descs_used)) { > pr_debug("Can't add buf len %i - avail = %i\n", > descs_used, vq->vq.num_free); > /* FIXME: for historical reasons, we force a notify here if >-- >2.17.1 > _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <073dc28b-1707-cd04-daba-13aa4fac5a85@linux.alibaba.com>]
* Re: [PATCH 2/2] virtio_ring: add unlikely annotation for free descs check [not found] ` <073dc28b-1707-cd04-daba-13aa4fac5a85@linux.alibaba.com> @ 2022-04-04 16:27 ` Michael S. Tsirkin 0 siblings, 0 replies; 5+ messages in thread From: Michael S. Tsirkin @ 2022-04-04 16:27 UTC (permalink / raw) To: Xianting Tian; +Cc: virtualization, linux-kernel On Mon, Apr 04, 2022 at 11:11:16PM +0800, Xianting Tian wrote: > I can't find it in next branch, will you apply this patch? yes, thanks! _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path [not found] <20220328105817.1028065-1-xianting.tian@linux.alibaba.com> 2022-03-29 4:56 ` [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path Jason Wang [not found] ` <20220328105817.1028065-2-xianting.tian@linux.alibaba.com> @ 2022-03-29 7:49 ` Stefano Garzarella 2 siblings, 0 replies; 5+ messages in thread From: Stefano Garzarella @ 2022-03-29 7:49 UTC (permalink / raw) To: Xianting Tian; +Cc: virtualization, linux-kernel, mst On Mon, Mar 28, 2022 at 06:58:16PM +0800, Xianting Tian wrote: >It passes '_vq' to virtqueue_use_indirect(), which still calls >to_vvq to get 'vq', let's directly pass 'vq'. It can avoid >unnecessary call of to_vvq in hot path. > >Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> >--- > drivers/virtio/virtio_ring.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > >diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c >index 962f1477b1fa..d597fc0874ec 100644 >--- a/drivers/virtio/virtio_ring.c >+++ b/drivers/virtio/virtio_ring.c >@@ -205,11 +205,9 @@ struct vring_virtqueue { > > #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) > >-static inline bool virtqueue_use_indirect(struct virtqueue *_vq, >+static inline bool virtqueue_use_indirect(struct vring_virtqueue *vq, > unsigned int total_sg) > { >- struct vring_virtqueue *vq = to_vvq(_vq); >- > /* > * If the host supports indirect descriptor tables, and we have multiple > * buffers, then go indirect. FIXME: tune this threshold >@@ -507,7 +505,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > > head = vq->free_head; > >- if (virtqueue_use_indirect(_vq, total_sg)) >+ if (virtqueue_use_indirect(vq, total_sg)) > desc = alloc_indirect_split(_vq, total_sg, gfp); > else { > desc = NULL; >@@ -1194,7 +1192,7 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq, > > BUG_ON(total_sg == 0); > >- if (virtqueue_use_indirect(_vq, total_sg)) { >+ if (virtqueue_use_indirect(vq, total_sg)) { > err = virtqueue_add_indirect_packed(vq, sgs, total_sg, out_sgs, > in_sgs, data, gfp); > if (err != -ENOMEM) { >-- >2.17.1 > _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-04-04 16:27 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220328105817.1028065-1-xianting.tian@linux.alibaba.com>
2022-03-29 4:56 ` [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path Jason Wang
[not found] ` <20220328105817.1028065-2-xianting.tian@linux.alibaba.com>
2022-03-29 4:57 ` [PATCH 2/2] virtio_ring: add unlikely annotation for free descs check Jason Wang
2022-03-29 7:50 ` Stefano Garzarella
[not found] ` <073dc28b-1707-cd04-daba-13aa4fac5a85@linux.alibaba.com>
2022-04-04 16:27 ` Michael S. Tsirkin
2022-03-29 7:49 ` [PATCH 1/2] virtio_ring: remove unnecessary to_vvq call in vring hot path Stefano Garzarella
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).