Re: [PATCH vhost v11 05/10] virtio_ring: introduce virtqueue_dma_dev()
From: Jason Wang <jasowang@redhat.com>
Date: 2023-07-31 01:23:47
Also in:
bpf, virtualization
On Fri, Jul 28, 2023 at 11:03 PM Jakub Kicinski [off-list ref] wrote:
On Fri, 28 Jul 2023 14:02:33 +0800 Xuan Zhuo wrote:quoted
Hi guys, this topic is stuck again. How should I proceed with this work? Let me briefly summarize: 1. The problem with adding virtio_dma_{map, sync} api is that, for AF_XDP and the driver layer, we need to support these APIs. The current conclusion of AF_XDP is no. 2. Set dma_set_mask_and_coherent, then we can use DMA API uniformly inside driver. This idea seems to be inconsistent with the framework design of DMA. The conclusion is no. 3. We noticed that if the virtio device supports VIRTIO_F_ACCESS_PLATFORM, it uses DMA API. And this type of device is the future direction, so we only support DMA premapped for this type of virtio device. The problem with this solution is that virtqueue_dma_dev() only returns dev in some cases, because VIRTIO_F_ACCESS_PLATFORM is supported in such cases. Otherwise NULL is returned. This option is currently NO. So I'm wondering what should I do, from a DMA point of view, is there any solution in case of using DMA API?I'd step back and ask you why do you want to use AF_XDP with virtio. Instead of bifurcating one virtio instance into different queues why not create a separate virtio instance?
I'm not sure I get this, but do you mean a separate virtio device that owns AF_XDP queues only? If I understand it correctly, bifurcating is one of the key advantages of AF_XDP. What's more, current virtio doesn't support being split at queue (pair) level. And it may still suffer from the yes/no DMA API issue. Thanks