|
@@ -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);
|
|
|
-
|
|
|
- ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
|
|
|
- write, true, remain);
|
|
|
- if (ret <= 0)
|
|
|
- return ret == 0 ? -ETIMEDOUT : ret;
|
|
|
- }
|
|
|
+ unsigned long remain =
|
|
|
+ op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout);
|
|
|
+ long lret;
|
|
|
+
|
|
|
+ lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
|
|
|
+ write, true, remain);
|
|
|
+ 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) {
|