diff options
| author | Dave Airlie <airlied@redhat.com> | 2016-09-28 11:09:59 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-09-28 11:09:59 +1000 | 
| commit | f8049dd865a1de8b494c16a4cd18ee15fa896810 (patch) | |
| tree | 37b874acba1392e97864dc24692736210543a4e4 /drivers/gpu/drm/msm/msm_gem.c | |
| parent | 3f346d5dcb591c2a5a26653d093af710cf2e5a31 (diff) | |
| parent | 7a3bcc0a8e2ad5fa7fe6d627e01c66b3488149b7 (diff) | |
Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next
A bit smaller pull-req this time around.  Some continued DT binding
cleanup to get the corresponding dts bits merged upstream (through
other trees).  And explicit fence-fd support for submit ioctl.
* 'msm-next' of git://people.freedesktop.org/~robclark/linux:
  drm/msm: bump kernel api version for explicit fencing
  drm/msm: submit support for out-fences
  drm/msm: move fence allocation out of msm_gpu_submit()
  drm/msm: submit support for in-fences
  drm/msm: extend the submit ioctl to pass in flags
  drm/msm/mdp5: Set rotation property initial value to DRM_ROTATE_0 insted of 0
  drm/msm/hdmi: don't print error when adding i2c adapter fails
  drm/msm/mdp4: mark symbols static where possible
  drm/msm: Remove call to reservation_object_test_signaled_rcu before wait
  drm/msm/hdmi: Clean up HDMI gpio DT bindings
  drm/msm/mdp4: Fix issue with LCDC/LVDS port parsing
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 6cd4af443139..0a9b5580b2e9 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -584,18 +584,16 @@ int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout)  {  	struct msm_gem_object *msm_obj = to_msm_bo(obj);  	bool write = !!(op & MSM_PREP_WRITE); - -	if (op & MSM_PREP_NOSYNC) { -		if (!reservation_object_test_signaled_rcu(msm_obj->resv, write)) -			return -EBUSY; -	} else { -		int ret; - -		ret = reservation_object_wait_timeout_rcu(msm_obj->resv, write, -				true, timeout_to_jiffies(timeout)); -		if (ret <= 0) -			return ret == 0 ? -ETIMEDOUT : ret; -	} +	unsigned long remain = +		op & MSM_PREP_NOSYNC ? 0 : timeout_to_jiffies(timeout); +	long ret; + +	ret = reservation_object_wait_timeout_rcu(msm_obj->resv, write, +						  true,  remain); +	if (ret == 0) +		return remain == 0 ? -EBUSY : -ETIMEDOUT; +	else if (ret < 0) +		return ret;  	/* TODO cache maintenance */  | 
