Commit 9f7886d0 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin

drm/i915: Spinlocks in tasklets can use spin_(un)lock_irq

The tasklets callbacks are only called from tasklet context so
it is safe do to this.
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170321105511.18269-1-tvrtko.ursulin@linux.intel.com
parent fe085f13
...@@ -573,7 +573,6 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine) ...@@ -573,7 +573,6 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
{ {
struct execlist_port *port = engine->execlist_port; struct execlist_port *port = engine->execlist_port;
struct drm_i915_gem_request *last = port[0].request; struct drm_i915_gem_request *last = port[0].request;
unsigned long flags;
struct rb_node *rb; struct rb_node *rb;
bool submit = false; bool submit = false;
...@@ -589,7 +588,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine) ...@@ -589,7 +588,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
if (!READ_ONCE(engine->execlist_first)) if (!READ_ONCE(engine->execlist_first))
return false; return false;
spin_lock_irqsave(&engine->timeline->lock, flags); spin_lock_irq(&engine->timeline->lock);
rb = engine->execlist_first; rb = engine->execlist_first;
while (rb) { while (rb) {
struct drm_i915_gem_request *rq = struct drm_i915_gem_request *rq =
...@@ -619,7 +618,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine) ...@@ -619,7 +618,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
nested_enable_signaling(last); nested_enable_signaling(last);
engine->execlist_first = rb; engine->execlist_first = rb;
} }
spin_unlock_irqrestore(&engine->timeline->lock, flags); spin_unlock_irq(&engine->timeline->lock);
return submit; return submit;
} }
......
...@@ -399,7 +399,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) ...@@ -399,7 +399,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
{ {
struct drm_i915_gem_request *last; struct drm_i915_gem_request *last;
struct execlist_port *port = engine->execlist_port; struct execlist_port *port = engine->execlist_port;
unsigned long flags;
struct rb_node *rb; struct rb_node *rb;
bool submit = false; bool submit = false;
...@@ -448,7 +447,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine) ...@@ -448,7 +447,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
* and context switches) submission. * and context switches) submission.
*/ */
spin_lock_irqsave(&engine->timeline->lock, flags); spin_lock_irq(&engine->timeline->lock);
rb = engine->execlist_first; rb = engine->execlist_first;
while (rb) { while (rb) {
struct drm_i915_gem_request *cursor = struct drm_i915_gem_request *cursor =
...@@ -500,7 +499,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine) ...@@ -500,7 +499,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
i915_gem_request_assign(&port->request, last); i915_gem_request_assign(&port->request, last);
engine->execlist_first = rb; engine->execlist_first = rb;
} }
spin_unlock_irqrestore(&engine->timeline->lock, flags); spin_unlock_irq(&engine->timeline->lock);
if (submit) if (submit)
execlists_submit_ports(engine); execlists_submit_ports(engine);
......
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