Commit f4d57d83 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Allow interrupts when taking the timeline->mutex

Before we commit ourselves to writing commands into the
ringbuffer and submitting the request, allow signals to interrupt
acquisition of the timeline mutex. We allow ourselves to be interrupted
at any time later if we need to block for space in the ring, anyway.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190610103610.19883-1-chris@chris-wilson.co.uk
parent f398bbde
...@@ -113,10 +113,11 @@ static inline void intel_context_put(struct intel_context *ce) ...@@ -113,10 +113,11 @@ static inline void intel_context_put(struct intel_context *ce)
kref_put(&ce->ref, ce->ops->destroy); kref_put(&ce->ref, ce->ops->destroy);
} }
static inline void intel_context_timeline_lock(struct intel_context *ce) static inline int __must_check
intel_context_timeline_lock(struct intel_context *ce)
__acquires(&ce->ring->timeline->mutex) __acquires(&ce->ring->timeline->mutex)
{ {
mutex_lock(&ce->ring->timeline->mutex); return mutex_lock_interruptible(&ce->ring->timeline->mutex);
} }
static inline void intel_context_timeline_unlock(struct intel_context *ce) static inline void intel_context_timeline_unlock(struct intel_context *ce)
......
...@@ -784,8 +784,11 @@ struct i915_request * ...@@ -784,8 +784,11 @@ struct i915_request *
i915_request_create(struct intel_context *ce) i915_request_create(struct intel_context *ce)
{ {
struct i915_request *rq; struct i915_request *rq;
int err;
intel_context_timeline_lock(ce); err = intel_context_timeline_lock(ce);
if (err)
return ERR_PTR(err);
/* Move our oldest request to the slab-cache (if not in use!) */ /* Move our oldest request to the slab-cache (if not in use!) */
rq = list_first_entry(&ce->ring->request_list, typeof(*rq), ring_link); rq = list_first_entry(&ce->ring->request_list, typeof(*rq), ring_link);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment