[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJaqyWddTABhmjGjvY5F91g1x5pN4MxCtPnsWt-3H=SqEKO4RQ@mail.gmail.com>
Date: Mon, 28 Jul 2025 15:41:34 +0200
From: Eugenio Perez Martin <eperezma@...hat.com>
To: Jason Wang <jasowang@...hat.com>
Cc: mst@...hat.com, xuanzhuo@...ux.alibaba.com, virtualization@...ts.linux.dev,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH V4 00/19] virtio_ring in order support
On Thu, Jul 24, 2025 at 8:40 AM Jason Wang <jasowang@...hat.com> wrote:
>
> Hello all:
>
> This sereis tries to implement the VIRTIO_F_IN_ORDER to
> virtio_ring. This is done by introducing virtqueue ops so we can
> implement separate helpers for different virtqueue layout/features
> then the in-order were implemented on top.
>
> Tests shows 2%-19% imporvment with packed virtqueue PPS with KVM guest
> vhost-net/testpmd on the host.
>
> Changes since V3:
>
> - Re-benchmark with the recent vhost-net in order support
> - Rename the batched used id and length
> - Other minor tweaks
>
> Changes since V2:
>
> - Fix build warning when DEBUG is enabled
>
> Changes since V1:
>
> - use const global array of function pointers to avoid indirect
> branches to eliminate retpoline when mitigation is enabled
> - fix used length calculation when processing used ids in a batch
> - fix sparse warnings
>
> Please review.
>
> Thanks
>
> Jason Wang (19):
> virtio_ring: rename virtqueue_reinit_xxx to virtqueue_reset_xxx()
> virtio_ring: switch to use vring_virtqueue in virtqueue_poll variants
> virtio_ring: unify logic of virtqueue_poll() and more_used()
> virtio_ring: switch to use vring_virtqueue for virtqueue resize
> variants
> virtio_ring: switch to use vring_virtqueue for virtqueue_kick_prepare
> variants
> virtio_ring: switch to use vring_virtqueue for virtqueue_add variants
> virtio: switch to use vring_virtqueue for virtqueue_add variants
> virtio_ring: switch to use vring_virtqueue for enable_cb_prepare
> variants
> virtio_ring: use vring_virtqueue for enable_cb_delayed variants
> virtio_ring: switch to use vring_virtqueue for disable_cb variants
> virtio_ring: switch to use vring_virtqueue for detach_unused_buf
> variants
> virtio_ring: use u16 for last_used_idx in virtqueue_poll_split()
> virtio_ring: introduce virtqueue ops
> virtio_ring: determine descriptor flags at one time
> virtio_ring: factor out core logic of buffer detaching
> virtio_ring: factor out core logic for updating last_used_idx
> virtio_ring: factor out split indirect detaching logic
> virtio_ring: factor out split detaching logic
> virtio_ring: add in order support
>
> drivers/virtio/virtio_ring.c | 902 +++++++++++++++++++++++++++--------
> 1 file changed, 690 insertions(+), 212 deletions(-)
>
I'm happy with this series and it solves the abuse of the DMA API as
far as I know. As a suggestion, maybe we can get rid of the
vring_use_map_api function and move it to the vdev? It's actually part
of the TODO of the function, and this seems ideal.
This can be done on top of course, so
Acked-by: Eugenio Pérez <eperezma@...hat.com>
Thanks!
Powered by blists - more mailing lists