[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240508022331.63751-1-xuanzhuo@linux.alibaba.com>
Date: Wed, 8 May 2024 10:23:26 +0800
From: Xuan Zhuo <xuanzhuo@...ux.alibaba.com>
To: virtualization@...ts.linux.dev
Cc: "Michael S. Tsirkin" <mst@...hat.com>,
Jason Wang <jasowang@...hat.com>,
Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
netdev@...r.kernel.org,
bpf@...r.kernel.org
Subject: [PATCH vhost 0/5] virtio_net: introduce api to enable/disable premapped mode for sq
As discussed:
http://lore.kernel.org/all/CACGkMEvq0No8QGC46U4mGsMtuD44fD_cfLcPaVmJ3rHYqRZxYg@mail.gmail.com
If virtio is in pre-mapped mode, the driver should manage the DMA info itself.
However, due to the indirect feature, the virtio-net driver may need to maintain
an excessive amount of DMA info. Therefore, we only enable pre-mapped mode for
the send queue (SQ) when af-xdp is bound to it. We have set a limit on the
amount of DMA info we manage. If the kernel stack or xdp tx/redirect attempts to
use more descriptors than this limit, virtnet_add_outbuf() will return an
-ENOMEM error. However, AF-XDP can continue working.
The last patch aims to demonstrate the logic of enabling pre-mapped mode when
af-xdp is bound to the SQ, and we can discuss it further.
Although the APIs are not used, this patch might belong in the final patch set
(virtio-net supports AF_XDP). But I hope the first four patches can be merged
first to reduce the number of patches in the final set.
Thanks.
Xuan Zhuo (5):
virtio_ring: introduce vring_need_unmap_buffer
virtio_ring: introduce dma map api for page
virtio_ring: introduce virtqueue_dma_map_sg_attrs
virtio_ring: virtqueue_set_dma_premapped() support to disable
virtio_net: sq support premapped mode
drivers/net/virtio_net.c | 212 ++++++++++++++++++++++++++++++++++-
drivers/virtio/virtio_ring.c | 118 ++++++++++++++++---
include/linux/virtio.h | 12 +-
3 files changed, 319 insertions(+), 23 deletions(-)
--
2.32.0.3.g01195cf9f
Powered by blists - more mailing lists