Quoting Mika Kuoppala (2020-02-11 14:50:08)
> Chris Wilson <[email protected]> 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
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx