<div class="gmail_quote">On Tue, Apr 9, 2013 at 7:37 AM, Maarten Lankhorst <span dir="ltr"><<a href="mailto:m.b.lankhorst@gmail.com" target="_blank">m.b.lankhorst@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Signed-off-by: Maarten Lankhorst <<a href="mailto:maarten.lankhorst@canonical.com">maarten.lankhorst@canonical.com</a>><br></blockquote><div><br>Can userspace pin directly ? If so then that sounds as a bad idea.<br>
<br>Reviewed-by: Jerome Glisse <<a href="mailto:jglisse@redhat.com">jglisse@redhat.com</a>><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 drivers/gpu/drm/radeon/radeon_drv.c   |  2 ++<br>
 drivers/gpu/drm/radeon/radeon_prime.c | 18 ++++++++++++++----<br>
 2 files changed, 16 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c<br>
index 66a7f0f..6800c5e 100644<br>
--- a/drivers/gpu/drm/radeon/radeon_drv.c<br>
+++ b/drivers/gpu/drm/radeon/radeon_drv.c<br>
@@ -124,6 +124,7 @@ struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev,<br>
                                                        size_t size,<br>
                                                        struct sg_table *sg);<br>
 int radeon_gem_prime_pin(struct drm_gem_object *obj);<br>
+void radeon_gem_prime_unpin(struct drm_gem_object *obj);<br>
 void *radeon_gem_prime_vmap(struct drm_gem_object *obj);<br>
 void radeon_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);<br>
 extern long radeon_kms_compat_ioctl(struct file *filp, unsigned int cmd,<br>
@@ -415,6 +416,7 @@ static struct drm_driver kms_driver = {<br>
        .gem_prime_export = drm_gem_prime_export,<br>
        .gem_prime_import = drm_gem_prime_import,<br>
        .gem_prime_pin = radeon_gem_prime_pin,<br>
+       .gem_prime_unpin = radeon_gem_prime_unpin,<br>
        .gem_prime_get_sg_table = radeon_gem_prime_get_sg_table,<br>
        .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table,<br>
        .gem_prime_vmap = radeon_gem_prime_vmap,<br>
diff --git a/drivers/gpu/drm/radeon/radeon_prime.c b/drivers/gpu/drm/radeon/radeon_prime.c<br>
index 4940af7..e557da5 100644<br>
--- a/drivers/gpu/drm/radeon/radeon_prime.c<br>
+++ b/drivers/gpu/drm/radeon/radeon_prime.c<br>
@@ -88,10 +88,20 @@ int radeon_gem_prime_pin(struct drm_gem_object *obj)<br>
<br>
        /* pin buffer into GTT */<br>
        ret = radeon_bo_pin(bo, RADEON_GEM_DOMAIN_GTT, NULL);<br>
-       if (ret) {<br>
-               radeon_bo_unreserve(bo);<br>
-               return ret;<br>
-       }<br>
+       radeon_bo_unreserve(bo);<br>
+       return ret;<br>
+}<br>
+<br>
+void radeon_gem_prime_unpin(struct drm_gem_object *obj)<br>
+{<br>
+       struct radeon_bo *bo = gem_to_radeon_bo(obj);<br>
+       int ret = 0;<br>
+<br>
+       ret = radeon_bo_reserve(bo, false);<br>
+       if (unlikely(ret != 0))<br>
+               return;<br>
+<br>
+       radeon_bo_unpin(bo);<br>
        radeon_bo_unreserve(bo);<br>
<br>
        return 0;<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.2<br>
<br>
_______________________________________________<br>
dri-devel mailing list<br>
<a href="mailto:dri-devel@lists.freedesktop.org">dri-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/dri-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/dri-devel</a><br>
</font></span></blockquote></div><br>