* drm/exynos: when to call dma_map_sg() on a GEM object?
@ 2015-10-30 20:44 Tobias Jakobi
2015-11-02 7:41 ` Joonyoung Shim
0 siblings, 1 reply; 4+ messages in thread
From: Tobias Jakobi @ 2015-10-30 20:44 UTC (permalink / raw)
To: ML dri-devel, linux-samsung-soc, Marek Szyprowski, Joonyoung Shim
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?
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.
Is the mapping done somewhere else, or is it simply not necessary here?
With best wishes,
Tobias
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drm/exynos: when to call dma_map_sg() on a GEM object?
2015-10-30 20:44 drm/exynos: when to call dma_map_sg() on a GEM object? Tobias Jakobi
@ 2015-11-02 7:41 ` Joonyoung Shim
2015-11-02 10:29 ` Tobias Jakobi
0 siblings, 1 reply; 4+ messages in thread
From: Joonyoung Shim @ 2015-11-02 7:41 UTC (permalink / raw)
To: Tobias Jakobi, ML dri-devel, linux-samsung-soc, Marek Szyprowski
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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drm/exynos: when to call dma_map_sg() on a GEM object?
2015-11-02 7:41 ` Joonyoung Shim
@ 2015-11-02 10:29 ` Tobias Jakobi
2015-11-02 10:42 ` Inki Dae
0 siblings, 1 reply; 4+ messages in thread
From: Tobias Jakobi @ 2015-11-02 10:29 UTC (permalink / raw)
To: Joonyoung Shim, ML dri-devel, linux-samsung-soc, Marek Szyprowski
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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drm/exynos: when to call dma_map_sg() on a GEM object?
2015-11-02 10:29 ` Tobias Jakobi
@ 2015-11-02 10:42 ` Inki Dae
0 siblings, 0 replies; 4+ messages in thread
From: Inki Dae @ 2015-11-02 10:42 UTC (permalink / raw)
To: Tobias Jakobi, Joonyoung Shim, ML dri-devel, linux-samsung-soc,
Marek Szyprowski
Hi Tobias,
2015년 11월 02일 19:29에 Tobias Jakobi 이(가) 쓴 글:
> 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.
That is done by dma-mapping API, dma_alloc_attrs function in case of Exynos DRM.
This dma mapping API calls internally iommu_map function of iommu framework
after allocating physical pages and iova space, and the iova space will be
mapped with physical pages.
Please, look into the dma mapping framework - arch/arm/mm/dma-mapping.c -
if you want to understand. I think you could understand it easily if you
tried to look into exynos_drm_alloc_buf function before asking for it.
Thanks,
Inki Dae
>
>
> With best wishes,
> Tobias
>
>
>>
>> Thanks.
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-02 10:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-30 20:44 drm/exynos: when to call dma_map_sg() on a GEM object? Tobias Jakobi
2015-11-02 7:41 ` Joonyoung Shim
2015-11-02 10:29 ` Tobias Jakobi
2015-11-02 10:42 ` Inki Dae
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.