Message ID | 20191015132606.14349-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Flush tasklet submission before sleeping on i915_request_wait | expand |
On 15/10/2019 14:26, Chris Wilson wrote: > If the system is being slow and userspace is racing ahead of the GPU and > finds itself waiting for the GPU to catch up, before the process sleeps > give the tasklet a kick, bypassing ksoftirqd. If the system is > overloaded, then ksoftirqd may be delayed incurring additional latency > to our user. > > This should not be a frequent problem, but in the past we have observed > several hundred millisecond delays before ksoftirqd services an > interrupt, so burn a few cycles to lend a helping hand. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > --- > drivers/gpu/drm/i915/i915_request.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c > index b8a54572a4f8..f1cadad4e81c 100644 > --- a/drivers/gpu/drm/i915/i915_request.c > +++ b/drivers/gpu/drm/i915/i915_request.c > @@ -1496,6 +1496,7 @@ long i915_request_wait(struct i915_request *rq, > break; > } > > + intel_engine_flush_submission(rq->engine); > timeout = io_schedule_timeout(timeout); > } > __set_current_state(TASK_RUNNING); > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index b8a54572a4f8..f1cadad4e81c 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -1496,6 +1496,7 @@ long i915_request_wait(struct i915_request *rq, break; } + intel_engine_flush_submission(rq->engine); timeout = io_schedule_timeout(timeout); } __set_current_state(TASK_RUNNING);
If the system is being slow and userspace is racing ahead of the GPU and finds itself waiting for the GPU to catch up, before the process sleeps give the tasklet a kick, bypassing ksoftirqd. If the system is overloaded, then ksoftirqd may be delayed incurring additional latency to our user. This should not be a frequent problem, but in the past we have observed several hundred millisecond delays before ksoftirqd services an interrupt, so burn a few cycles to lend a helping hand. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/gpu/drm/i915/i915_request.c | 1 + 1 file changed, 1 insertion(+)