[PATCH 2/2] drm/etnaviv: call correct function when trying to vmap a DMABUF

Lucas Stach l.stach at pengutronix.de
Tue Jan 26 07:45:26 PST 2016


When trying to get the vmap address of an imported buffer, we must
call into the appropriate helper function, to allow the exporter to
establish the vmap, instead of trying to vmap the buffer on our own.

Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
 drivers/gpu/drm/etnaviv/etnaviv_gem.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index b22712fdd31e..ce458d8473fe 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -14,6 +14,7 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <linux/dma-buf.h>
 #include <linux/spinlock.h>
 #include <linux/shmem_fs.h>
 
@@ -357,8 +358,14 @@ void *etnaviv_gem_vaddr(struct drm_gem_object *obj)
 {
 	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
 
+	if (etnaviv_obj->vaddr)
+		return etnaviv_obj->vaddr;
+
 	mutex_lock(&etnaviv_obj->lock);
-	if (!etnaviv_obj->vaddr) {
+	if (etnaviv_obj->base.import_attach) {
+		etnaviv_obj->vaddr =
+			dma_buf_vmap(etnaviv_obj->base.import_attach->dmabuf);
+	} else {
 		struct page **pages = etnaviv_gem_get_pages(etnaviv_obj);
 
 		if (IS_ERR(pages)) {
-- 
2.7.0.rc3



More information about the dri-devel mailing list