diff --git a/src/intel/common/i915/intel_gem.h b/src/intel/common/i915/intel_gem.h index 5852586a17d..a614fe00fba 100644 --- a/src/intel/common/i915/intel_gem.h +++ b/src/intel/common/i915/intel_gem.h @@ -146,21 +146,21 @@ static inline int i915_gem_execbuf_ioctl(int fd, const struct intel_device_info *info, struct drm_i915_gem_execbuffer2 *execbuf) { - int ret, retries = 0; + int ret, retries; assert((execbuf->flags & I915_EXEC_FENCE_OUT) == 0); if (unlikely(info->no_hw)) return 0; - while (true) { + /* After 80 retries, we spent more than 16s sleeping. */ + for (retries = 0; retries < 80; retries++) { ret = intel_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf); if (likely(!(ret && errno == ENOMEM))) break; os_time_sleep(100 * retries * retries); - retries++; } return ret;