summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
authorChris Wilson2018-06-27 22:13:03 +0200
committerChris Wilson2018-06-28 21:56:35 +0200
commit78796877c37cb2c3898c4bcd2a12238d83858287 (patch)
treedfb89c14a8a2e1b7cd190a3ff113acf7ed07d434 /drivers/gpu/drm/i915/i915_irq.c
parentdrm/i915: Only trigger missed-seqno checking next to boundary (diff)
downloadkernel-qcow2-linux-78796877c37cb2c3898c4bcd2a12238d83858287.tar.gz
kernel-qcow2-linux-78796877c37cb2c3898c4bcd2a12238d83858287.tar.xz
kernel-qcow2-linux-78796877c37cb2c3898c4bcd2a12238d83858287.zip
drm/i915: Move the irq_counter inside the spinlock
Rather than have multiple locked instructions inside the notify_ring() irq handler, move them inside the spinlock and reduce their intrinsic locking. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180627201304.15817-3-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 4f137eeaf395..c81b4c1877cc 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1162,8 +1162,6 @@ static void notify_ring(struct intel_engine_cs *engine)
if (unlikely(!engine->breadcrumbs.irq_armed))
return;
- atomic_inc(&engine->irq_count);
-
rcu_read_lock();
spin_lock(&engine->breadcrumbs.irq_lock);
@@ -1198,6 +1196,8 @@ static void notify_ring(struct intel_engine_cs *engine)
tsk = wait->tsk;
}
}
+
+ engine->breadcrumbs.irq_count++;
} else {
if (engine->breadcrumbs.irq_armed)
__intel_engine_disarm_breadcrumbs(engine);