Re: [PATCH v2 0/2] virtio: abstract virtqueue related methods

From: Michael S. Tsirkin
Date: Tue May 16 2023 - 23:47:48 EST


On Wed, May 17, 2023 at 10:54:22AM +0800, zhenwei pi wrote:
> v1 -> v2:
> - Suggested by MST, use fast path for vring based performance
> sensitive API.
> - Reduce changes in tools/virtio.
>
> Add test result(no obvious change):
> Before:
> time ./vringh_test --parallel
> Using CPUS 0 and 191
> Guest: notified 10036893, pinged 68278
> Host: notified 68278, pinged 3093532
>
> real 0m14.463s
> user 0m6.437s
> sys 0m8.010s
>
> After:
> time ./vringh_test --parallel
> Using CPUS 0 and 191
> Guest: notified 10036709, pinged 68347
> Host: notified 68347, pinged 3085292
>
> real 0m14.196s
> user 0m6.289s
> sys 0m7.885s
>
> v1:
> Hi,
>
> 3 weeks ago, I posted a proposal 'Virtio Over Fabrics':
> https://lists.oasis-open.org/archives/virtio-comment/202304/msg00442.html
>
> Jason and Stefan pointed out that a non-vring based virtqueue has a
> chance to overwrite virtqueue instead of using vring virtqueue.
>
> Then I try to abstract virtqueue related methods in this series, the
> details changes see the comment of patch 'virtio: abstract virtqueue related methods'.
>
> Something is still remained:
> - __virtqueue_break/__virtqueue_unbreak is supposed to use by internal
> virtio core, I'd like to rename them to vring_virtqueue_break
> /vring_virtqueue_unbreak. Is this reasonable?

Why? These just set a flag?

> - virtqueue_get_desc_addr/virtqueue_get_avail_addr/virtqueue_get_used_addr
> /virtqueue_get_vring is vring specific, I'd like to rename them like
> vring_virtqueue_get_desc_addr. Is this reasonable?
> - there are still some functions in virtio_ring.c with prefix *virtqueue*,
> for example 'virtqueue_add_split', just keep it or rename it to
> 'vring_virtqueue_add_split'?
> zhenwei pi (2):
> virtio: abstract virtqueue related methods
> tools/virtio: implement virtqueue in test
>
> drivers/virtio/virtio_ring.c | 285 +++++-----------------
> include/linux/virtio.h | 441 +++++++++++++++++++++++++++++++----
> include/linux/virtio_ring.h | 26 +++
> tools/virtio/linux/virtio.h | 355 +++++++++++++++++++++++++---
> 4 files changed, 807 insertions(+), 300 deletions(-)
>
> --
> 2.20.1