All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] virtio: support advance DMA
@ 2022-01-07  6:33 Xuan Zhuo
  2022-01-07  6:33 ` [PATCH 1/6] virtio: rename vring_unmap_state_packed() to vring_unmap_extra_packed() Xuan Zhuo
                   ` (6 more replies)
  0 siblings, 7 replies; 26+ messages in thread
From: Xuan Zhuo @ 2022-01-07  6:33 UTC (permalink / raw)
  To: virtualization; +Cc: Michael S. Tsirkin

virtqueue_add() only supports virtual addresses, dma is completed in
virtqueue_add().

In some scenarios (such as the AF_XDP scenario), DMA is completed in advance, so
it is necessary for us to support passing the DMA address to virtqueue_add().

This patch set stipulates that if sg->dma_address is not NULL, use this
address as the DMA address. And record this information in extra->flags,
which can be skipped when executing dma unmap.

    extra->flags |= VRING_DESC_F_PREDMA;

But the indirect desc does not have a corresponding extra, so the second and
third patches of this patch set are to allocate the corresponding extra while
allocating the indirect desc. Each desc must have a corresponding extra because
it is possible in an sgs some are advance DMA, while others are virtual
addresses. So we must allocate an extra for each indirect desc.

Xuan Zhuo (6):
  virtio: rename vring_unmap_state_packed() to
    vring_unmap_extra_packed()
  virtio: split: alloc indirect desc with extra
  virtio: packed: alloc indirect desc with extra
  virtio: split: virtqueue_add_split() support dma address
  virtio: packed: virtqueue_add_packed() support dma address
  virtio: add api virtio_dma_map() for advance dma

 drivers/virtio/virtio_ring.c | 387 ++++++++++++++++++++---------------
 include/linux/virtio.h       |   9 +
 2 files changed, 232 insertions(+), 164 deletions(-)

--
2.31.0

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2022-01-11  6:28 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-07  6:33 [PATCH 0/6] virtio: support advance DMA Xuan Zhuo
2022-01-07  6:33 ` [PATCH 1/6] virtio: rename vring_unmap_state_packed() to vring_unmap_extra_packed() Xuan Zhuo
2022-01-10  6:19   ` Jason Wang
2022-01-07  6:33 ` [PATCH 2/6] virtio: split: alloc indirect desc with extra Xuan Zhuo
2022-01-10  6:43   ` Jason Wang
2022-01-10  7:19     ` Xuan Zhuo
2022-01-10  7:41       ` Jason Wang
2022-01-10  7:52         ` Xuan Zhuo
2022-01-10  8:54           ` Jason Wang
2022-01-10  9:23             ` Xuan Zhuo
2022-01-10  9:49               ` Michael S. Tsirkin
2022-01-10  9:58                 ` Xuan Zhuo
2022-01-10 10:06                   ` Michael S. Tsirkin
2022-01-11  2:44               ` Jason Wang
2022-01-11  5:57                 ` Xuan Zhuo
2022-01-07  6:33 ` [PATCH 3/6] virtio: packed: " Xuan Zhuo
2022-01-07  6:33 ` [PATCH 4/6] virtio: split: virtqueue_add_split() support dma address Xuan Zhuo
2022-01-10  6:45   ` Jason Wang
2022-01-10  7:24     ` Xuan Zhuo
2022-01-07  6:33 ` [PATCH 5/6] virtio: packed: virtqueue_add_packed() " Xuan Zhuo
2022-01-07  6:33 ` [PATCH 6/6] virtio: add api virtio_dma_map() for advance dma Xuan Zhuo
2022-01-10  7:12   ` Michael S. Tsirkin
2022-01-10  7:24     ` Xuan Zhuo
2022-01-10  9:59 ` [PATCH 0/6] virtio: support advance DMA Michael S. Tsirkin
2022-01-11  2:54   ` Jason Wang
2022-01-11  6:17     ` Xuan Zhuo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.