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: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Link: http://patchwork.freedesktop.org/patch/msgid/20170321105511.18269-1-tvrtko.ursulin@linux.intel.com
This commit is contained in:
parent
fe085f13c7
commit
9f7886d07f
|
@ -573,7 +573,6 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
|
|||
{
|
||||
struct execlist_port *port = engine->execlist_port;
|
||||
struct drm_i915_gem_request *last = port[0].request;
|
||||
unsigned long flags;
|
||||
struct rb_node *rb;
|
||||
bool submit = false;
|
||||
|
||||
|
@ -589,7 +588,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
|
|||
if (!READ_ONCE(engine->execlist_first))
|
||||
return false;
|
||||
|
||||
spin_lock_irqsave(&engine->timeline->lock, flags);
|
||||
spin_lock_irq(&engine->timeline->lock);
|
||||
rb = engine->execlist_first;
|
||||
while (rb) {
|
||||
struct drm_i915_gem_request *rq =
|
||||
|
@ -619,7 +618,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
|
|||
nested_enable_signaling(last);
|
||||
engine->execlist_first = rb;
|
||||
}
|
||||
spin_unlock_irqrestore(&engine->timeline->lock, flags);
|
||||
spin_unlock_irq(&engine->timeline->lock);
|
||||
|
||||
return submit;
|
||||
}
|
||||
|
|
|
@ -399,7 +399,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
|
|||
{
|
||||
struct drm_i915_gem_request *last;
|
||||
struct execlist_port *port = engine->execlist_port;
|
||||
unsigned long flags;
|
||||
struct rb_node *rb;
|
||||
bool submit = false;
|
||||
|
||||
|
@ -448,7 +447,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
|
|||
* and context switches) submission.
|
||||
*/
|
||||
|
||||
spin_lock_irqsave(&engine->timeline->lock, flags);
|
||||
spin_lock_irq(&engine->timeline->lock);
|
||||
rb = engine->execlist_first;
|
||||
while (rb) {
|
||||
struct drm_i915_gem_request *cursor =
|
||||
|
@ -500,7 +499,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
|
|||
i915_gem_request_assign(&port->request, last);
|
||||
engine->execlist_first = rb;
|
||||
}
|
||||
spin_unlock_irqrestore(&engine->timeline->lock, flags);
|
||||
spin_unlock_irq(&engine->timeline->lock);
|
||||
|
||||
if (submit)
|
||||
execlists_submit_ports(engine);
|
||||
|
|
Loading…
Reference in a new issue