qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC v3 00/12] packed ring virtio-net userspace backend


From: Tiwei Bie
Subject: Re: [Qemu-devel] [RFC v3 00/12] packed ring virtio-net userspace backend support
Date: Wed, 21 Nov 2018 22:39:20 +0800
User-agent: Mutt/1.10.1 (2018-07-13)

Hi Wei,

FYI, the latest packed ring series for guest driver doesn't set
the _F_NEXT bit for indirect descriptors any more. So below hack
in guest driver is needed to make it work with this series:

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index cd7e755484e3..42faea7d8cf8 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -980,6 +980,7 @@ static int virtqueue_add_indirect_packed(struct 
vring_virtqueue *vq,
        unsigned int i, n, err_idx;
        u16 head, id;
        dma_addr_t addr;
+       int c = 0;
 
        head = vq->packed.next_avail_idx;
        desc = alloc_indirect_packed(total_sg, gfp);
@@ -1001,8 +1002,9 @@ static int virtqueue_add_indirect_packed(struct 
vring_virtqueue *vq,
                        if (vring_mapping_error(vq, addr))
                                goto unmap_release;
 
-                       desc[i].flags = cpu_to_le16(n < out_sgs ?
-                                               0 : VRING_DESC_F_WRITE);
+                       desc[i].flags = cpu_to_le16((n < out_sgs ?
+                                               0 : VRING_DESC_F_WRITE) |
+                                   (++c == total_sg ? 0 : VRING_DESC_F_NEXT));
                        desc[i].addr = cpu_to_le64(addr);
                        desc[i].len = cpu_to_le32(sg->length);
                        i++;
-- 
2.14.1

On Thu, Oct 11, 2018 at 10:08:23AM -0400, address@hidden wrote:
> From: Wei Xu <address@hidden>
> 
> code base:
> https://github.com/Whishay/qemu.git
> 
> Todo:
> - migration has not been support yet
> 
> v2->v3
> - addressed performance issue
> - fixed feedback from v2
> 
> v1->v2
> - sync to tiwei's v5
> - reuse memory cache function with 1.0
> - dropped detach patch and notification helper(04 & 05 in v1)
> - guest virtio-net driver unload/reload support
> - event suppression support(not tested)
> - addressed feedback from v1
> 
> Wei Xu (12):
>   virtio: introduce packed ring definitions
>   virtio: redefine structure & memory cache for packed ring
>   virtio: init memory cache for packed ring
>   virtio: init wrap counter for packed ring
>   virtio: init and desc empty check for packed ring
>   virtio: get avail bytes check for packed ring
>   virtio: fill/flush/pop for packed ring
>   virtio: event suppression support for packed ring
>   virtio-net: fill head desc after done all in a chain
>   virtio: packed ring feature bit for userspace backend
>   virtio: enable packed ring via a new command line
>   virtio: feature vhost-net support for packed ring
> 
>  hw/net/vhost_net.c                             |   1 +
>  hw/net/virtio-net.c                            |  11 +-
>  hw/virtio/vhost.c                              |  19 +-
>  hw/virtio/virtio.c                             | 685 
> +++++++++++++++++++++++--
>  include/hw/virtio/virtio.h                     |   9 +-
>  include/standard-headers/linux/virtio_config.h |  15 +
>  include/standard-headers/linux/virtio_ring.h   |  43 ++
>  7 files changed, 736 insertions(+), 47 deletions(-)
> 
> -- 
> 1.8.3.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]