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