On Thu, Nov 29, 2018 at 07:33:15PM +0530, Vivek Gautam wrote: > dma_map_sg() expects a DMA domain. However, the drm devices > have been traditionally using unmanaged iommu domain which > is non-dma type. Using dma mapping APIs with that domain is bad. > > Replace dma_map_sg() calls with dma_sync_sg_for_device{|cpu}() > to do the cache maintenance. As I told you before: hell no. If you spent the slightest amount of actually trying to understand what you are doing here you'd know this can't work. Just turn on dma debugging and this will blow up in your face. Either you use the DMA API properly, that is you use it to map and to sync, or you don't use it at all. Mix and match between iommu APIs and DMA APIs is simply not possible.