[Intel-gfx] [PATCH] drm/i915: Honour O_NONBLOCK before throttling execbuf submissions
Chris Wilson
chris at chris-wilson.co.uk
Fri Oct 11 13:37:09 UTC 2019
Quoting Chris Wilson (2019-10-10 14:48:49)
> Check the user's flags on the struct file before deciding whether or not
> to stall before submitting a request. This allows us to reasonably
> cheaply honour O_NONBLOCK without checking at more critical phases
> during request submission.
>
> Suggested-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 21 ++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index 98816c35ffc3..bc6bcb8f6d79 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2189,15 +2189,22 @@ static int __eb_pin_engine(struct i915_execbuffer *eb, struct intel_context *ce)
> intel_context_timeline_unlock(tl);
>
> if (rq) {
> - if (i915_request_wait(rq,
> - I915_WAIT_INTERRUPTIBLE,
> - MAX_SCHEDULE_TIMEOUT) < 0) {
> - i915_request_put(rq);
> - err = -EINTR;
> - goto err_exit;
> - }
> + bool nonblock = eb->file->filp->f_flags & O_NONBLOCK;
> + long timeout;
The alternative or addendum would be to use an execbuf.flag to opt out
of throttling. O_NONBLOCK seems fitting though.
-Chris
More information about the Intel-gfx
mailing list