aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <[email protected]>2018-06-27 21:13:02 +0100
committerChris Wilson <[email protected]>2018-06-28 20:56:35 +0100
commit69dc4d003e3b7c262fd5fea3f25852e853eb6d4f (patch)
tree2158a840ce34c4a7fd3563bd2380428a34549f74
parent3f88325c2e396658a17632a19b59958750d7ad89 (diff)
drm/i915: Only trigger missed-seqno checking next to boundary
If we have more interrupts pending (because we know there are more breadcrumb signals before the completion), then we do not need to trigger an irq_seqno_barrier or even wakeup the task on this interrupt as there will be another. To allow some margin of error (we are trying to work around incoherent seqno after all), we wakeup the breadcrumb before the target as well as on the target. Signed-off-by: Chris Wilson <[email protected]> Cc: Mika Kuoppala <[email protected]> Reviewed-by: Mika Kuoppala <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 8893e795f672..4f137eeaf395 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1191,7 +1191,8 @@ static void notify_ring(struct intel_engine_cs *engine)
tsk = wait->tsk;
} else {
- if (engine->irq_seqno_barrier) {
+ if (engine->irq_seqno_barrier &&
+ i915_seqno_passed(seqno, wait->seqno - 1)) {
set_bit(ENGINE_IRQ_BREADCRUMB,
&engine->irq_posted);
tsk = wait->tsk;