mirror of https://gitee.com/openkylin/linux.git
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: Chris 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: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org> Link: http://patchwork.freedesktop.org/patch/msgid/20160829070834.22296-2-chris@chris-wilson.co.uk
This commit is contained in:
parent
0fea2ed61e
commit
cd34db4a52
|
@ -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 etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
|
||||||
struct drm_device *dev = obj->dev;
|
struct drm_device *dev = obj->dev;
|
||||||
bool write = !!(op & ETNA_PREP_WRITE);
|
bool write = !!(op & ETNA_PREP_WRITE);
|
||||||
int ret;
|
unsigned long remain =
|
||||||
|
op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout);
|
||||||
|
long lret;
|
||||||
|
|
||||||
if (op & ETNA_PREP_NOSYNC) {
|
lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
|
||||||
if (!reservation_object_test_signaled_rcu(etnaviv_obj->resv,
|
write, true, remain);
|
||||||
write))
|
if (lret < 0)
|
||||||
return -EBUSY;
|
return lret;
|
||||||
} else {
|
else if (lret == 0)
|
||||||
unsigned long remain = etnaviv_timeout_to_jiffies(timeout);
|
return remain == 0 ? -EBUSY : -ETIMEDOUT;
|
||||||
|
|
||||||
ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
|
|
||||||
write, true, remain);
|
|
||||||
if (ret <= 0)
|
|
||||||
return ret == 0 ? -ETIMEDOUT : ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (etnaviv_obj->flags & ETNA_BO_CACHED) {
|
if (etnaviv_obj->flags & ETNA_BO_CACHED) {
|
||||||
if (!etnaviv_obj->sgt) {
|
if (!etnaviv_obj->sgt) {
|
||||||
|
|
Loading…
Reference in New Issue