[Intel-gfx] [igt-dev] [PATCH i-g-t] i915/gem_exec_balancer: Check for scheduling bonded-pairs on the same engine
Chris Wilson
chris at chris-wilson.co.uk
Mon Sep 23 18:11:51 UTC 2019
Quoting Tvrtko Ursulin (2019-09-23 17:21:50)
>
> On 23/09/2019 16:43, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2019-09-23 15:29:11)
> >>
> >> On 20/09/2019 23:26, Chris Wilson wrote:
> >>> + spin = __igt_spin_new(i915,
> >>> + .ctx = ctx,
> >>> + .flags = (IGT_SPIN_NO_PREEMPTION |
> >>> + IGT_SPIN_POLL_RUN));
> >>> + igt_spin_end(spin); /* we just want its address for later */
> >>> + gem_sync(i915, spin->handle);
> >>> + igt_spin_reset(spin);
> >>> +
> >>> + obj[0] = spin->obj[0];
> >>> + obj[1] = spin->obj[1];
>
> igt_assert_eq(IGT_SPIN_BATCH, 1);
Sensible enough, it's always going to be tied to implementation as we
play tricks from the gpu.
> >>> + /* A: Submit the semaphore wait */
> >>> + eb.buffer_count = 3;
> >>> + eb.flags = (1 + rand() % count) | I915_EXEC_FENCE_OUT;
> >>> + gem_execbuf_wr(i915, &eb);
> >>> +
> >>> + /* B: Submit the spinner (in parallel) */
> >>
> >> How in parallel when it is the same context so they are implicitly in order?
> >
> > Different engines with different timelines, using the submit to request
> > parallel execution.
>
> Yeah I kind of missed a few things. Looks good. For completeness you
> should also add a flavour which actually sets up the bond so the "if
> (bond)" path in virtual_bond_execute is also exercised. But this looks good.
I'll try to capture the questions in better comments. I was avoiding
setting up the explicit bonds mostly because I was amazed to get a
working test, and I was getting lost in the combinatorials to make it
explicit :) (i.e. what should we do if we have more engines in the set).
-Chris
More information about the Intel-gfx
mailing list