[Letux-kernel] [small team RFC v3 04/10] XXX omapdrm: force tiled buffers to be pinned and page-aligned
H. Nikolaus Schaller
hns at goldelico.com
Mon Feb 5 17:20:59 CET 2018
From: Matthijs van Duin <matthijsvanduin at gmail.com>
---
drivers/gpu/drm/omapdrm/omap_gem.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
index fa118d3089a3..6cf190156dcf 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -820,7 +820,7 @@ static int _omap_gem_pin(struct drm_gem_object *obj)
if (omap_obj->flags & OMAP_BO_TILED) {
block = tiler_reserve_2d(fmt,
omap_obj->width,
- omap_obj->height, 0);
+ omap_obj->height, PAGE_SIZE);
} else {
block = tiler_reserve_1d(obj->size);
}
@@ -1106,6 +1106,9 @@ void omap_gem_free_object(struct drm_gem_object *obj)
WARN_ON(!mutex_is_locked(&dev->struct_mutex));
+ if (omap_obj->flags & OMAP_BO_TILED)
+ _omap_gem_unpin(obj);
+
spin_lock(&priv->list_lock);
list_del(&omap_obj->mm_list);
spin_unlock(&priv->list_lock);
@@ -1229,6 +1232,12 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
goto err_release;
}
+ if (flags & OMAP_BO_TILED) {
+ ret = _omap_gem_pin(obj);
+ if (ret)
+ goto err_release;
+ }
+
spin_lock(&priv->list_lock);
list_add(&omap_obj->mm_list, &priv->obj_list);
spin_unlock(&priv->list_lock);
--
2.12.2
More information about the Letux-kernel
mailing list