[Intel-gfx] [PATCH 2/7] drm/i915/selftests: Exercise timeslice rewinding
Chris Wilson
chris at chris-wilson.co.uk
Tue Feb 11 15:16:07 UTC 2020
Quoting Mika Kuoppala (2020-02-11 14:50:08)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> > + /* Release the hounds! */
> > + slot[0] = 1;
> > + wmb();
> > +
> > + for (i = 1; i <= 3; i++) {
> > + unsigned long timeout = jiffies + HZ / 2;
> > +
> > + while (!READ_ONCE(slot[i]) &&
> > + time_before(jiffies, timeout))
>
> you pushed with wmb so you could expect with rmb() and cpu_relax();
> I guess it works fine without :O.
The wmb() "pairs" with GPU; just paranoia.
> > + ;
> > +
> > + if (!time_before(jiffies, timeout)) {
> > + pr_err("%s: rq[%d] timed out\n",
> > + engine->name, i - 1);
> > + err = -ETIME;
> > + goto err;
> > + }
> > +
> > + pr_debug("%s: slot[%d]:%x\n", engine->name, i, slot[i]);
> > + }
> > +
> > + /* XZY: XZ < XY */
> > + if (slot[3] - slot[1] >= slot[2] - slot[1]) {
> > + pr_err("%s: timeslicing did not run context B [%u] before A [%u]!\n",
> > + engine->name,
> > + slot[3] - slot[1],
> > + slot[2] - slot[1]);
> > + err = -EINVAL;
> > + }
> > +
> > +err:
> > + memset(slot, 0xff, 4 * sizeof(u32));
>
> was expecting slot[0] =
memset32(&slot[0], -1, 4); /* weirdo */
-Chris
More information about the Intel-gfx
mailing list