All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/exynos: Add fallback option to get non physically contiguous memory for gem_dumb_create
@ 2013-08-23  6:35 Vikas Sajjan
  2013-08-26 14:03 ` Vikas Sajjan
       [not found] ` <1377239706-17804-1-git-send-email-vikas.sajjan-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  0 siblings, 2 replies; 6+ messages in thread
From: Vikas Sajjan @ 2013-08-23  6:35 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	inki.dae-Sze3O3UU22JBDgjK7y7TUQ
  Cc: kgene.kim-Sze3O3UU22JBDgjK7y7TUQ,
	linaro-dev-cunTk1MwBs8s++Sfvej+rw, patches-QSEj5FYQhm4dnm+yROfE0A,
	tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw,
	s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ

To address the case where physically contiguous memory MAY NOT be a mandatory
requirement for framebuffer for the application calling exynos_drm_gem_dumb_create,
the patch adds a feature to get non physically contiguous memory for framebuffer,
if physically contiguous memory allocation fails and if IOMMU is supported.

Signed-off-by: Vikas Sajjan <vikas.sajjan-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Signed-off-by: Arun Kumar <arun.kk-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
 drivers/gpu/drm/exynos/exynos_drm_gem.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 2eabe1a..66d1b40 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -17,6 +17,7 @@
 #include "exynos_drm_drv.h"
 #include "exynos_drm_gem.h"
 #include "exynos_drm_buf.h"
+#include "exynos_drm_iommu.h"
 
 static unsigned int convert_to_vm_err_msg(int msg)
 {
@@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
 
 	exynos_gem_obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG |
 						EXYNOS_BO_WC, args->size);
+	/*
+	 * If physically contiguous memory allocation fails and if IOMMU is
+	 * supported then try to get buffer from non physically contiguous
+	 * memory area.
+	 */
+	if (IS_ERR(exynos_gem_obj) && is_drm_iommu_supported(dev)) {
+		dev_warn(dev->dev, "contiguous FB allocation failed, falling back to non-contiguous\n");
+		exynos_gem_obj = exynos_drm_gem_create(dev,
+					EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC,
+					args->size);
+	}
+
 	if (IS_ERR(exynos_gem_obj))
 		return PTR_ERR(exynos_gem_obj);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-08-27  4:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-23  6:35 [PATCH] drm/exynos: Add fallback option to get non physically contiguous memory for gem_dumb_create Vikas Sajjan
2013-08-26 14:03 ` Vikas Sajjan
     [not found] ` <1377239706-17804-1-git-send-email-vikas.sajjan-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-08-27  2:44   ` Inki Dae
2013-08-27  3:04     ` Vikas Sajjan
2013-08-27  4:14       ` Inki Dae
2013-08-27  4:22         ` Vikas Sajjan

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.