drm/exynos: when to call dma_map_sg() on a GEM object?
Tobias Jakobi
tjakobi at math.uni-bielefeld.de
Mon Nov 2 02:29:31 PST 2015
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.
>
More information about the dri-devel
mailing list