drm/i915: Spinlocks in tasklets can use spin_(un)lock_irq
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 21 Mar 2017 10:55:11 +0000 (10:55 +0000)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 21 Mar 2017 15:04:55 +0000 (15:04 +0000)
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
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/intel_lrc.c

index 7a78e12..055467a 100644 (file)
@@ -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;
 }
index 090238e..eec1e71 100644 (file)
@@ -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);