• Xie Yongji's avatar
    vduse: Implement an MMU-based software IOTLB · 8c773d53
    Xie Yongji authored
    This implements an MMU-based software IOTLB to support mapping
    kernel dma buffer into userspace dynamically. The basic idea
    behind it is treating MMU (VA->PA) as IOMMU (IOVA->PA). The
    software IOTLB will set up MMU mapping instead of IOMMU mapping
    for the DMA transfer so that the userspace process is able to
    use its virtual address to access the dma buffer in kernel.
    
    To avoid security issue, a bounce-buffering mechanism is
    introduced to prevent userspace accessing the original buffer
    directly which may contain other kernel data. During the mapping,
    unmapping, the software IOTLB will copy the data from the original
    buffer to the bounce buffer and back, depending on the direction
    of the transfer. And the bounce-buffer addresses will be mapped
    into the user address space instead of the original one.
    Signed-off-by: default avatarXie Yongji <xieyongji@bytedance.com>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20210831103634.33-12-xieyongji@bytedance.comSigned-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    8c773d53
iova_domain.c 12.9 KB