aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 675c28d54658..cb1424abb7c0 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1042,8 +1042,6 @@ static void notify_ring(struct intel_engine_cs *engine)
atomic_inc(&engine->irq_count);
set_bit(ENGINE_IRQ_BREADCRUMB, &engine->irq_posted);
- rcu_read_lock();
-
spin_lock(&engine->breadcrumbs.lock);
wait = engine->breadcrumbs.first_wait;
if (wait) {
@@ -1060,7 +1058,7 @@ static void notify_ring(struct intel_engine_cs *engine)
*/
if (i915_seqno_passed(intel_engine_get_seqno(engine),
wait->seqno))
- rq = wait->request;
+ rq = i915_gem_request_get(wait->request);
wake_up_process(wait->tsk);
} else {
@@ -1068,10 +1066,10 @@ static void notify_ring(struct intel_engine_cs *engine)
}
spin_unlock(&engine->breadcrumbs.lock);
- if (rq)
+ if (rq) {
dma_fence_signal(&rq->fence);
-
- rcu_read_unlock();
+ i915_gem_request_put(rq);
+ }
trace_intel_engine_notify(engine, wait);
}