Thread (23 messages) 23 messages, 4 authors, 2017-10-11

Re: [PATCH v8 13/14] IB/core: use MAP_DIRECT to fix / enable RDMA to DAX mappings

flat view

From: Dan Williams <hidden>
Date: 2017-10-11 16:01:25
Also in: linux-fsdevel, linux-iommu, linux-mm, linux-rdma, linux-xfs, nvdimm

On Wed, Oct 11, 2017 at 4:54 AM, Joerg Roedel [off-list ref] wrote:
On Tue, Oct 10, 2017 at 07:50:12AM -0700, Dan Williams wrote:
quoted
+static void ib_umem_lease_break(void *__umem)
+{
+     struct ib_umem *umem = umem;
+     struct ib_device *idev = umem->context->device;
+     struct device *dev = idev->dma_device;
+     struct scatterlist *sgl = umem->sg_head.sgl;
+
+     iommu_unmap(umem->iommu, sg_dma_address(sgl) & PAGE_MASK,
+                     iommu_sg_num_pages(dev, sgl, umem->npages));
+}
This looks like an invitation to break your code by random iommu-driver
changes. There is no guarantee that an iommu-backed dma-api
implemenation will map exactly iommu_sg_num_pages() pages for a given
sg-list. In other words, you are mixing the use of the IOMMU-API and the
DMA-API in an incompatible way that only works because you know the
internals of the iommu-drivers.

I've seen in another patch that your changes strictly require an IOMMU,
so you what you should do instead is to switch from the DMA-API to the
IOMMU-API and do the address-space management yourself.
Ok, I'll switch over completely to the iommu api for this. It will
also address Robin's concern.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help