Quoting Mika Kuoppala (2020-02-11 14:50:08) > Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> 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 Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx