|
@@ -3029,6 +3029,16 @@ i915_gem_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
|
|
|
args->timeout_ns -= ktime_to_ns(ktime_sub(ktime_get(), start));
|
|
|
if (args->timeout_ns < 0)
|
|
|
args->timeout_ns = 0;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Apparently ktime isn't accurate enough and occasionally has a
|
|
|
+ * bit of mismatch in the jiffies<->nsecs<->ktime loop. So patch
|
|
|
+ * things up to make the test happy. We allow up to 1 jiffy.
|
|
|
+ *
|
|
|
+ * This is a regression from the timespec->ktime conversion.
|
|
|
+ */
|
|
|
+ if (ret == -ETIME && !nsecs_to_jiffies(args->timeout_ns))
|
|
|
+ args->timeout_ns = 0;
|
|
|
}
|
|
|
|
|
|
i915_gem_object_put(obj);
|