Hi Will,
On Thu, Jul 11, 2019 at 06:19:12PM +0100, Will Deacon wrote:
> static void __iommu_dma_unmap(struct iommu_domain *domain, dma_addr_t
> dma_addr,
> size_t size)
> {
> + struct iommu_iotlb_gather iotlb_gather;
> struct iommu_dma_cookie *cookie = domain->iova_cookie;
> struct iova_domain *iovad = &cookie->iovad;
> size_t iova_off = iova_offset(iovad, dma_addr);
> + size_t unmapped;
>
> dma_addr -= iova_off;
> size = iova_align(iovad, size + iova_off);
> + iommu_iotlb_gather_init(&iotlb_gather);
> +
> + unmapped = iommu_unmap_fast(domain, dma_addr, size, &iotlb_gather);
> + WARN_ON(unmapped != size);
>
> - WARN_ON(iommu_unmap_fast(domain, dma_addr, size) != size);
> if (!cookie->fq_domain)
> - iommu_tlb_sync(domain);
> + iommu_tlb_sync(domain, &iotlb_gather);
> iommu_dma_free_iova(cookie, dma_addr, size);
I looked through your patches and was wondering if we can't make the
'struct iotlb_gather' a member of 'struct iommu_domain' and update it
transparently for the user? That would make things easier for users of
the iommu-api.
Regards,
Joerg
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu