Here, this has cc the maintainers of AF_XDP. For on the same page, I summarize it. We discusses this question last at [1]. We planned to pass one device to xsk. Then xsk can use the DMA API on this device. The device can be one hw device(such as PCI, mmio) or virtio device. If it is one hw device, no problem. If it is one virtio device, then we expect that DMA API on that will return direct dma map, because the dma_ops of the virtio device is NULL. But on some platform such as sparc64 or some case of x86, the arch has own dma_ops. So we wrong. And as the discuss of this thread, we cannot get direct dma address from virtio device by DMA API. So, we need xsk to expose the DMA ops to the virtio-net driver when virtio core can not use the DMA API. All the processing of dma inside xsk: 1. map/unmap at enable/disable 2. dma sync Solution: 1. xsk uses phy memory and passes the dma sync when the dev is null. 2. xsk uses the callbacks passed by driver to do the dma. If I miss something, please point out. Thanks. [1] https://lore.kernel.org/virtualization/1677727282.6062915-2-xuanzhuo@xxxxxxxxxxxxxxxxx/ _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization