drm/exynos: when to call dma_map_sg() on a GEM object?

Joonyoung Shim jy0922.shim at samsung.com
Sun Nov 1 23:41:56 PST 2015


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.

> 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?
DMA_ATTR_NO_KERNEL_MAPPING is just to avoid creating a kernel virtual
mapping for the allocated buffer on ARM arch.

> 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_*().

Thanks.


More information about the dri-devel mailing list