This is useful for some setups like swiotlb or VDUSE where the DMA operations are expensive and/or need to be performed with a write lock. After applying this patch, fio read test goes from 1201MiB/s to 1211MiB/s. --- Sending this series to obtain feedback if this is the right way to go. Q: Do we need virtqueue_map_sgs? XDP directly call dma_map. Need to profile. TODO: Profile multiqueue. TODO: Handling errors. TODO: Do the same for hiprio queue. TODO: Can we batch maps? virtiofs always sends many buffers. Eugenio Pérez (4): vduse: add virtio_fs to allowed dev id virtiofs: Move stack sg to fuse_req virtio_ring: add virtqueue premapped out/in buffers support virtiofs: perform DMA operations out of the spinlock Jason Wang (1): virtio_ring: introduce virtqueue_map/unmap_sgs() drivers/vdpa/vdpa_user/vduse_dev.c | 1 + drivers/virtio/virtio_ring.c | 165 ++++++++++++++++++++++++++--- fs/fuse/fuse_i.h | 7 ++ fs/fuse/virtio_fs.c | 68 +++++++----- include/linux/virtio.h | 17 +++ 5 files changed, 220 insertions(+), 38 deletions(-) -- 2.48.1