Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd34db4a authored by Chris Wilson's avatar Chris Wilson Committed by Sumit Semwal
Browse files

drm/etnaviv: Remove manual call to reservation_object_test_signaled_rcu before wait



Since fence_wait_timeout_reservation_object_wait_timeout_rcu() with a
timeout of 0 becomes reservation_object_test_signaled_rcu(), we do not
need to handle such conversion in the caller. The only challenge are
those callers that wish to differentiate the error code between the
nonblocking busy check and potentially blocking wait.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Russell King <linux+etnaviv@armlinux.org.uk>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: default avatarLucas Stach <l.stach@pengutronix.de>
Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20160829070834.22296-2-chris@chris-wilson.co.uk
parent 0fea2ed6
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -409,20 +409,16 @@ int etnaviv_gem_cpu_prep(struct drm_gem_object *obj, u32 op,
	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
	struct drm_device *dev = obj->dev;
	bool write = !!(op & ETNA_PREP_WRITE);
	int ret;

	if (op & ETNA_PREP_NOSYNC) {
		if (!reservation_object_test_signaled_rcu(etnaviv_obj->resv,
							  write))
			return -EBUSY;
	} else {
		unsigned long remain = etnaviv_timeout_to_jiffies(timeout);
	unsigned long remain =
		op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout);
	long lret;

		ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
	lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
						   write, true, remain);
		if (ret <= 0)
			return ret == 0 ? -ETIMEDOUT : ret;
	}
	if (lret < 0)
		return lret;
	else if (lret == 0)
		return remain == 0 ? -EBUSY : -ETIMEDOUT;

	if (etnaviv_obj->flags & ETNA_BO_CACHED) {
		if (!etnaviv_obj->sgt) {