[Intel-gfx] [PATCH 2/2] drm/i915: Assert that the context-switch completion matches our context
Chris Wilson
chris at chris-wilson.co.uk
Mon Jan 23 08:32:29 UTC 2017
On Mon, Jan 23, 2017 at 10:26:00AM +0200, Joonas Lahtinen wrote:
> On la, 2017-01-21 at 17:29 +0000, Chris Wilson wrote:
> > When execlists signals the context completion, it also provides the
> > context id for the status event. Assert that id matches the one we expect.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>
> <SNIP>
>
> > @@ -595,6 +595,10 @@ static void intel_lrc_irq_handler(unsigned long data)
> > if (!(status & GEN8_CTX_STATUS_COMPLETED_MASK))
> > continue;
> >
> > + /* Check the context id for this event matches */
> > + GEM_BUG_ON(readl(buf + 2 * idx + 1) !=
> > + port[0].request->ctx->hw_id);
> > +
> > GEM_BUG_ON(port[0].count == 0);
> > if (--port[0].count == 0) {
> > GEM_BUG_ON(status & GEN8_CTX_STATUS_PREEMPTED);
>
> This is good for now, Mika has to update it for the SVM code, though.
>
> (Counterpart at intel_lr_context_descriptor_update).
One suggestion you made was that hw_id might carry the pasid in its
upper 12bits (matching lrc_desc construction). Or an alternative is that
we use upper_32_bits(port[0]->request->ctx->engine[engine->id].lrc_desc)
here. That's probably a better description if that is what the hw is
doing - which I can't remember, I have vague memories of it being a
direct copy of the high dword, but the description of it I read over the
weekend just referred to it as context_id.
So does the context status carry the upper dword of elsp or just the
context id? Easy way to find out -- today everything say use group 1!
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list