Nilesh, On Tue, Jan 09, 2024 at 05:44:56PM +0530, Nilesh Javali wrote: > + ret = dma_mmap_coherent(&idev->dev, > + vma, > + addr, > + mem->dma_addr, > + vma->vm_end - vma->vm_start); When I asked about the use of idev->dev here in the v2 posting, you repled as follows. > While the cnic loads, it registers the cnic_uio_dev->pdev->dev with > uio and the uio attaches its device to cnic device as it's parent. So > uio and cnic are attached to the same PCI device. I still don't think the sysfs parent relationship is enough to get the correct behavior out of the DMA APIs on all platforms, and dma_mmap_coherent needs to be using the same device struct as dma_alloc_coherent. I had some testing done on an AMD system, where your v2 patch set was failing with the iommu enabled, and my original changes were reported to work. And I believe these v3 patches are functionally the same. - Chris