• Logan Gunthorpe's avatar
    iommu/vt-d: Implement dma_[un]map_resource() · 21d5d27c
    Logan Gunthorpe authored
    Currently the Intel IOMMU uses the default dma_[un]map_resource()
    implementations does nothing and simply returns the physical address
    unmodified.
    
    However, this doesn't create the IOVA entries necessary for addresses
    mapped this way to work when the IOMMU is enabled. Thus, when the
    IOMMU is enabled, drivers relying on dma_map_resource() will trigger
    DMAR errors. We see this when running ntb_transport with the IOMMU
    enabled, DMA, and switchtec hardware.
    
    The implementation for intel_map_resource() is nearly identical to
    intel_map_page(), we just have to re-create __intel_map_single().
    dma_unmap_resource() uses intel_unmap_page() directly as the
    functions are identical.
    Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Joerg Roedel <joro@8bytes.org>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    21d5d27c
intel-iommu.c 137 KB