Hello Joonyoung, Joonyoung Shim wrote: > On 10/31/2015 05:44 AM, Tobias Jakobi wrote: >> Hey there, >> >> this question arose during some discussion with someone concerning the >> Exynos mixer and G2D. >> >> The question is the following. Consider the Exynos mixer when run under >> the IOMMU (that's sysmmu_tv IIRC). What exactly does setup the IOMMU >> mapping so that the mixer can scanout the framebuffer? >> > > IOMMU mapping is in dma_alloc_attrs(). Already IOMMU was integrated in > the DMA mapping API on ARM arch. Thanks, I'm going to take a closer look at dma_alloc_attrs() then. >> There is exynos_gem_map_sgt_with_dma() in the Exynos GEM code, but it's >> currently exclusively used for the G2D and only when dealing with >> userptr (and not GEM) there. >> >> I was looking at exynos_drm_alloc_buf() since this called when >> allocating a BO to be used as scanout. >> >> I see dma_alloc_attrs() being called, which also sets the DMA address >> that is later used in the mixer code. But DMA_ATTR_NO_KERNEL_MAPPING is >> passed, so no mapping is done at this point. >> > > Did you read Documentation/DMA-attributes.txt document? I did, but I guess I should read it again... > DMA_ATTR_NO_KERNEL_MAPPING is just to avoid creating a kernel virtual > mapping for the allocated buffer on ARM arch. Ah OK, so the IOMMU mapping is always established. >> Is the mapping done somewhere else, or is it simply not necessary here? >> > > What is the mapping you mean? As you know, the DMA address of the > memory gets from dma_alloc_attrs() and it can be used by device. There > is no reason to use dma_map_*(). >From my understanding the mixer doesn't directly access the physical memory when running under IOMMU. It accesses memory through sysmmu_tv, so my question was who does the setup so that sysmmu_tv "knows" how to translate memory accesses. With best wishes, Tobias > > Thanks. > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel