On Wed, Oct 25, 2023 at 12:26:58PM +0530, jeshwank wrote: > + tee_buf->vaddr = dma_alloc_coherent(psp->dev, size, &tee_buf->dma, gfp); > + if (!tee_buf->vaddr || !tee_buf->dma) { > + kfree(tee_buf); > + return NULL; > + } > + > + tee_buf->size = size; > + > + /* Check whether IOMMU is present. If present, translate IOVA > + * to physical address, else the dma handle is the physical > + * address. > + */ > + dom = iommu_get_domain_for_dev(psp->dev); > + if (dom) > + tee_buf->paddr = iommu_iova_to_phys(dom, tee_buf->dma); > + else No, you can't mix the DMA API and iommu API. You need to stick to one or the other.