On Wed, Oct 11, 2017 at 4:54 AM, Joerg Roedel <joro@xxxxxxxxxx> wrote: > On Tue, Oct 10, 2017 at 07:50:12AM -0700, Dan Williams wrote: >> +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. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html