]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/vt-d: Implement dma_[un]map_resource()
authorLogan Gunthorpe <logang@deltatee.com>
Tue, 22 Jan 2019 21:30:45 +0000 (14:30 -0700)
committerJoerg Roedel <jroedel@suse.de>
Wed, 30 Jan 2019 16:23:04 +0000 (17:23 +0100)
commit8d4fa557ce7e35f3a134498a6449daff9f312609
tree87dceaee64d8edcc96655afa93941f3e5a86963a
parent9231508b1e8e1ba7e9976e5626590243f5f7362a
iommu/vt-d: Implement dma_[un]map_resource()

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: Logan Gunthorpe <logang@deltatee.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Joerg Roedel <joro@8bytes.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel-iommu.c