[PATCH 0/4] [RFC] Addition of dma-mapping IOMMU framework in Exynos DRM
Prathyush
prathyush.k at samsung.com
Sat Apr 14 04:52:09 PDT 2012
From: Prathyush K <prathyush.k at samsung.com>
With these set of patches, the Exynos5 DRM module will be able to
allocate, export and map non-contiguous memory for GEM objects using the
dma-mapping IOMMU framework.
These patches are based on the following references:
1> Exynos 5 SYSMMU driver by Kyongho Cho
http://lists.infradead.org/pipermail/linux-arm-kernel/2011-December/078636.htm
2> DMA-MAPPING IOMMU framework by Marek Szyprowski
http://lists.infradead.org/pipermail/linux-arm-kernel/2011-June/053636.html
3> DRM-PRIME by Dave Airlie
http://patches.linaro.org/7480/
4> DRM Exynos DMABUF module by Inki Dae
http://git.infradead.org/users/kmpark/linux-2.6-samsung/commit/
d59d3e521d8a9d27e7b329f89f24a8473f32f50c/
5> Support for dma_get_pages by Tomasz Stanislawski
http://patchwork.linuxtv.org/patch/9639/
The updated GEM framework by Inki Dae is not considered for this patch set.
IOMMU mapping is created for exynos-drm-device initially.
Allocation of GEM objects happens through dma_alloc_writecombine which
inturn calls arm_iommu_alloc_attrs. This will allocate a non-contig set of
pages, allocate a iova and map all the pages.
The following changes are done to support non-contiguous memory for GEM objects
[PATCH 1/4]:
drm/exynos: DMABUF: Added support for exporting non-contig buffers.
This patch is for creating and mapping a SGT in map_dma_buf by
retrieving the pages by calling dma_get_pages.
[PATCH 2/4]:
drm/exynos: Mapping of gem objects uses dma_mmap_writecombine.
This patch is for mapping the non-contiguous GEM objects to user
space by calling dma_mmap_writecombine.
[PATCH 3/4]:
drm/Exynos: Added 'disable' function to Exynos drm crtc module.
This patch is required for safe release of DRM. If a FB of a CRTC
is released, the driver tries to disable the CRTC if that is
supported by the CRTC. This patch adds Exynos DRM CRTC disable
functionality.
[PATCH 4/4]:
drm: Releasing FBs before releasing GEM objects during drm_release.
This patch is required for safe release of DRM. During drm release,
all the FBs and GEM objects are released. A gem object which is used
as a FB must not be freed first before releasing the FB. This patch
modifies the drm release function to first release the FBs and then
release the GEMs.
drivers/gpu/drm/drm_fops.c | 6 +-
drivers/gpu/drm/exynos/exynos_drm_crtc.c | 11 +++
drivers/gpu/drm/exynos/exynos_drm_dmabuf.c | 98 +++++++++++++++++++++++-----
drivers/gpu/drm/exynos/exynos_drm_gem.c | 70 +++++++++-----------
4 files changed, 128 insertions(+), 57 deletions(-)
More information about the dri-devel
mailing list