* [CI] drm/i915: Refactor wakeup of the next breadcrumb waiter
@ 2017-03-03 17:14 Chris Wilson
2017-03-03 18:23 ` ✗ Fi.CI.BAT: failure for " Patchwork
0 siblings, 1 reply; 3+ messages in thread
From: Chris Wilson @ 2017-03-03 17:14 UTC (permalink / raw)
To: intel-gfx
Refactor the common task of updating the first_waiter, serialised with
the interrupt handler. When we update the first_waiter, we also need to
wakeup the new bottom-half in order to complete the actions that we may
have delegated to it (such as checking the irq-seqno coherency or waking
up other lower priority concurrent waiters).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
drivers/gpu/drm/i915/intel_breadcrumbs.c | 48 ++++++++++++--------------------
1 file changed, 18 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c
index 235d4645a5cf..2b26f84480cc 100644
--- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
@@ -287,6 +287,22 @@ static inline void __intel_breadcrumbs_finish(struct intel_breadcrumbs *b,
wake_up_process(wait->tsk); /* implicit smp_wmb() */
}
+static inline void __intel_breadcrumbs_next(struct intel_engine_cs *engine,
+ struct rb_node *next)
+{
+ struct intel_breadcrumbs *b = &engine->breadcrumbs;
+
+ GEM_BUG_ON(!b->irq_armed);
+ b->first_wait = to_wait(next);
+
+ /* We always wake up the next waiter that takes over as the bottom-half
+ * as we may delegate not only the irq-seqno barrier to the next waiter
+ * but also the task of waking up concurrent waiters.
+ */
+ if (next)
+ wake_up_process(to_wait(next)->tsk);
+}
+
static bool __intel_engine_add_wait(struct intel_engine_cs *engine,
struct intel_wait *wait)
{
@@ -357,21 +373,7 @@ static bool __intel_engine_add_wait(struct intel_engine_cs *engine,
GEM_BUG_ON(!next && !first);
if (next && next != &wait->node) {
GEM_BUG_ON(first);
- b->first_wait = to_wait(next);
- /* As there is a delay between reading the current
- * seqno, processing the completed tasks and selecting
- * the next waiter, we may have missed the interrupt
- * and so need for the next bottom-half to wakeup.
- *
- * Also as we enable the IRQ, we may miss the
- * interrupt for that seqno, so we have to wake up
- * the next bottom-half in order to do a coherent check
- * in case the seqno passed.
- */
- __intel_breadcrumbs_enable_irq(b);
- if (test_bit(ENGINE_IRQ_BREADCRUMB,
- &engine->irq_posted))
- wake_up_process(to_wait(next)->tsk);
+ __intel_breadcrumbs_next(engine, next);
}
do {
@@ -473,21 +475,7 @@ static void __intel_engine_remove_wait(struct intel_engine_cs *engine,
}
}
- if (next) {
- /* In our haste, we may have completed the first waiter
- * before we enabled the interrupt. Do so now as we
- * have a second waiter for a future seqno. Afterwards,
- * we have to wake up that waiter in case we missed
- * the interrupt, or if we have to handle an
- * exception rather than a seqno completion.
- */
- b->first_wait = to_wait(next);
- if (b->first_wait->seqno != wait->seqno)
- __intel_breadcrumbs_enable_irq(b);
- wake_up_process(b->first_wait->tsk);
- } else {
- b->first_wait = NULL;
- }
+ __intel_breadcrumbs_next(engine, next);
} else {
GEM_BUG_ON(rb_first(&b->waiters) == &wait->node);
}
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 3+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: Refactor wakeup of the next breadcrumb waiter
2017-03-03 17:14 [CI] drm/i915: Refactor wakeup of the next breadcrumb waiter Chris Wilson
@ 2017-03-03 18:23 ` Patchwork
2017-03-03 18:34 ` Chris Wilson
0 siblings, 1 reply; 3+ messages in thread
From: Patchwork @ 2017-03-03 18:23 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Refactor wakeup of the next breadcrumb waiter
URL : https://patchwork.freedesktop.org/series/20642/
State : failure
== Summary ==
Series 20642v1 drm/i915: Refactor wakeup of the next breadcrumb waiter
https://patchwork.freedesktop.org/api/1.0/series/20642/revisions/1/mbox/
Test gem_exec_fence:
Subgroup nb-await-default:
pass -> INCOMPLETE (fi-hsw-4770)
Test kms_force_connector_basic:
Subgroup force-connector-state:
pass -> SKIP (fi-ivb-3520m)
Subgroup force-edid:
pass -> SKIP (fi-ivb-3520m)
Subgroup force-load-detect:
pass -> SKIP (fi-ivb-3520m)
Subgroup prune-stale-modes:
pass -> SKIP (fi-ivb-3520m)
fi-bdw-5557u total:278 pass:267 dwarn:0 dfail:0 fail:0 skip:11
fi-bsw-n3050 total:278 pass:239 dwarn:0 dfail:0 fail:0 skip:39
fi-bxt-j4205 total:278 pass:259 dwarn:0 dfail:0 fail:0 skip:19
fi-bxt-t5700 total:278 pass:258 dwarn:0 dfail:0 fail:0 skip:20
fi-byt-j1900 total:278 pass:251 dwarn:0 dfail:0 fail:0 skip:27
fi-byt-n2820 total:278 pass:247 dwarn:0 dfail:0 fail:0 skip:31
fi-hsw-4770 total:49 pass:42 dwarn:0 dfail:0 fail:0 skip:6
fi-hsw-4770r total:278 pass:262 dwarn:0 dfail:0 fail:0 skip:16
fi-ilk-650 total:278 pass:228 dwarn:0 dfail:0 fail:0 skip:50
fi-ivb-3520m total:278 pass:256 dwarn:0 dfail:0 fail:0 skip:22
fi-ivb-3770 total:278 pass:260 dwarn:0 dfail:0 fail:0 skip:18
fi-kbl-7500u total:278 pass:259 dwarn:1 dfail:0 fail:0 skip:18
fi-skl-6260u total:278 pass:268 dwarn:0 dfail:0 fail:0 skip:10
fi-skl-6700hq total:278 pass:261 dwarn:0 dfail:0 fail:0 skip:17
fi-skl-6700k total:278 pass:256 dwarn:4 dfail:0 fail:0 skip:18
fi-skl-6770hq total:278 pass:268 dwarn:0 dfail:0 fail:0 skip:10
fi-snb-2520m total:278 pass:250 dwarn:0 dfail:0 fail:0 skip:28
fi-snb-2600 total:278 pass:249 dwarn:0 dfail:0 fail:0 skip:29
1d7915e7823628a0d548c6ecc5ad5b9a4ae4a6ff drm-tip: 2017y-03m-03d-15h-54m-06s UTC integration manifest
0162325 drm/i915: Refactor wakeup of the next breadcrumb waiter
== Logs ==
For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_4059/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ✗ Fi.CI.BAT: failure for drm/i915: Refactor wakeup of the next breadcrumb waiter
2017-03-03 18:23 ` ✗ Fi.CI.BAT: failure for " Patchwork
@ 2017-03-03 18:34 ` Chris Wilson
0 siblings, 0 replies; 3+ messages in thread
From: Chris Wilson @ 2017-03-03 18:34 UTC (permalink / raw)
To: intel-gfx
On Fri, Mar 03, 2017 at 06:23:01PM -0000, Patchwork wrote:
> == Series Details ==
>
> Series: drm/i915: Refactor wakeup of the next breadcrumb waiter
> URL : https://patchwork.freedesktop.org/series/20642/
> State : failure
>
> == Summary ==
>
> Series 20642v1 drm/i915: Refactor wakeup of the next breadcrumb waiter
> https://patchwork.freedesktop.org/api/1.0/series/20642/revisions/1/mbox/
>
> Test gem_exec_fence:
> Subgroup nb-await-default:
> pass -> INCOMPLETE (fi-hsw-4770)
Bah. DUT disconnect strikes again.
Pushed as I'm optimistic this will stop snb flip-flopping.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-03-03 18:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-03 17:14 [CI] drm/i915: Refactor wakeup of the next breadcrumb waiter Chris Wilson
2017-03-03 18:23 ` ✗ Fi.CI.BAT: failure for " Patchwork
2017-03-03 18:34 ` Chris Wilson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.