]> 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)
commit3de446f5c357325db9368c4c8be4d43c67d878ca
tree87dceaee64d8edcc96655afa93941f3e5a86963a
parent6fd30b81998c9f4440572ee5923e3beb071ae637
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