All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] drm/radeon: use RCU query for GEM_BUSY syscall
@ 2015-07-02 23:54 Grigori Goronzy
  2015-07-02 23:54   ` Grigori Goronzy
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Grigori Goronzy @ 2015-07-02 23:54 UTC (permalink / raw)
  To: dri-devel

We don't need to call the (expensive) radeon_bo_wait, checking the
fences via RCU is much faster. The reservation done by radeon_bo_wait
does not save us from any race conditions.

Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
---
 drivers/gpu/drm/radeon/radeon_gem.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index ac3c131..7199e19 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -428,7 +428,6 @@ int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data,
 int radeon_gem_busy_ioctl(struct drm_device *dev, void *data,
 			  struct drm_file *filp)
 {
-	struct radeon_device *rdev = dev->dev_private;
 	struct drm_radeon_gem_busy *args = data;
 	struct drm_gem_object *gobj;
 	struct radeon_bo *robj;
@@ -440,10 +439,16 @@ int radeon_gem_busy_ioctl(struct drm_device *dev, void *data,
 		return -ENOENT;
 	}
 	robj = gem_to_radeon_bo(gobj);
-	r = radeon_bo_wait(robj, &cur_placement, true);
+
+	r = reservation_object_test_signaled_rcu(robj->tbo.resv, true);
+	if (r == 0)
+		r = -EBUSY;
+	else
+		r = 0;
+
+	cur_placement = ACCESS_ONCE(robj->tbo.mem.mem_type);
 	args->domain = radeon_mem_type_to_domain(cur_placement);
 	drm_gem_object_unreference_unlocked(gobj);
-	r = radeon_gem_handle_lockup(rdev, r);
 	return r;
 }
 
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2015-07-06 21:14 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-02 23:54 [PATCH 1/4] drm/radeon: use RCU query for GEM_BUSY syscall Grigori Goronzy
2015-07-02 23:54 ` [PATCH 2/4] drm/radeon: fix HDP flushing Grigori Goronzy
2015-07-02 23:54   ` Grigori Goronzy
2015-07-02 23:54 ` [PATCH 3/4] drm/radeon: default to 2048 MB GART size on SI+ Grigori Goronzy
2015-07-02 23:54 ` [PATCH 4/4] drm/radeon: unpin cursor BOs before suspend Grigori Goronzy
2015-07-02 23:54   ` Grigori Goronzy
2015-07-03  3:30   ` Michel Dänzer
2015-07-03  8:16     ` Grigori Goronzy
2015-07-03 10:01       ` Michel Dänzer
2015-07-03  9:45 ` [PATCH 1/4] drm/radeon: use RCU query for GEM_BUSY syscall Christian König
2015-07-06 21:14   ` Alex Deucher

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.